【问题标题】:Rewrite index.php URLs by selected language按所选语言重写 index.php URL
【发布时间】:2013-03-09 15:25:09
【问题描述】:

我刚刚在这里搜索了很多,并在谷歌上搜索了这个实现,但我无法弄清楚。

我的意思是:我有一个包含 3 种语言的作品集网站(单页)。每次我点击一个标志(IT、EN、FR)时,它都会加载一个 php 文件。里面有许多基于所选语言的翻译句子/单词。

**问题:
最终的 url 是这样的:localhost/site/index.php?lang=en(如果你点击英文 lang)。
我想重写它:localhost/site/en

如何编写htaccess文件? **

我只是按照这个提示进行操作 --> Simulate file structure with PHP

还有这个:

RewriteEngine on
RewriteRule ^en/(.*)\.html$ /$1.php?language=english [L,QSA]

我不知道为什么不起作用。

其他细节:
- wamp 服务器
- mod_rewrite 激活
- 单页网站 (jquery)
- 火狐

谢谢。

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    这会起作用

    RewriteRule ^(.*).html index.php?lang=$1 [L]
    

    您的网址将是localhost/site/en.html

    【讨论】:

      【解决方案2】:

      您的 .htaccess 想要成为这样的东西:

      IndexIgnore */*
      
      RewriteEngine On
      
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule . index.php
      

      会将任何对不存在的文件的请求定向到您的 index.php。

      然后在 PHP 中检查 URL 并根据需要提供:

      $uri = $_SERVER["REQUEST_URI"];
      $uriParts = explode("/", $uri);
      $language = end($uriParts);
      
      if ($language == "en) {
      ....
      

      如果与预期语言不匹配,值得抛出 404。

      【讨论】:

      • 今晚我试试,谢谢。最后一个问题:我正在使用 WAMP,它可能会导致问题吗?我必须注意用 WAMP 编写我的 htaccess 吗?应该在哪里创建,在 root-localhost 或我的“站点”文件夹下?
      • 任何一种解决方案都不起作用。现在我想是因为 WAMP 配置或者我错过了 RewriteBase 规则中的某些内容。任何帮助表示赞赏,谢谢。
      • 您是否启用了 url 重写? stackoverflow.com/questions/869092/…
      • 是的,请参阅我的帖子中的“其他详细信息”。重写系统有效,但问题是如果我使用一个简单的规则将index.php?lang=en 重写为en/en,这些URL 指向任何内容(404)。如果我单击此链接 --> localhost/mysite/index.php?lang=en 我看到 localhost/mysite/en 但它说找不到页面。我正在使用 WAMP,在 www 文件夹下有 mysite 文件夹:这可能会导致 htaccess 出现问题?
      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多