【发布时间】:2016-05-02 22:03:38
【问题描述】:
您好,我正在开发一个网站,所有 .php 文件都位于服务器的主文件夹中(.htaccess 所在的位置)。 所以 index.php 和 productDetail.php 在同一个文件夹中。 我想重定向这样的网址:
http://www.mywebsite/productDetail/PRODUCTNAME
到
http://www.mywebsite/productDetail.php?product=PRODUCTNAME
这样我就可以链接第一个链接版本而不是第二个。
我还需要重定向一个更复杂的版本,比如:
http://www.mywebsite/PRODUCTCATEGORY/PRODUCTSUBCATEGORY/productDetail/PRODUCTNAME
到
我的 .htaccess 目前使用以下规则,我认为这些规则使此操作变得非常困难,因为我已经为此工作了很多时间:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteCond %{THE_REQUEST} !\s/(it|en)/ [NC]
RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^ /it%{REQUEST_URI} [L,NC,R=301]
RewriteCond %{THE_REQUEST} !\s/(it|en)/ [NC]
RewriteRule ^ /en%{REQUEST_URI} [L,NC,R=301]
RewriteRule ^(en|it)/(.*)$ $2?lang=$1 [L,QSA,NC]
任何帮助将不胜感激。 非常感谢
【问题讨论】:
-
只有一个主文件夹。即 MAIN,其中包含 index.php 和 productDetail.php 文件。 /it 或 /en 只是为不同浏览器语言更改 URL 的方法
-
好的,在这种情况下
http://www.mywebsite/productDetail/PRODUCTNAME实际上不会是http://www.mywebsite/en/productDetail/PRODUCTNAME? -
@anubhava 是的,这正是我想要实现的目标
-
@anubhava 是的,这正是我想要实现的。此时,我使用 URL mywebsite/en/productDetail?product=PRODUCTNAME 使用它,顺便说一下 productDetail.php 文件与 index.php 文件位于同一文件夹中,并且没有文件夹“en”或“it”。我现在需要使上面的工作 URL 看起来像 mywebsite/en/productDetail/PRODUCTNAME
标签: php apache .htaccess redirect mod-rewrite