1
我认为我自己可以合理地使用PHP。然而,我对mod_rewrite完全失去了信心。使用mod_rewrite进行搜索引擎友好链接的尾部斜杠问题
我有一个URL结构,工作方式类似于以下内容:重定向到
http://site/something/something-else/the-actual-page/
:
http://site/index.php?page=the-actual-page
它永远只能传递给脚本的最后的“文件夹”。前面的'文件夹'(如果有)用于搜索引擎优化和结构目的。
如果有前面的文件夹“promotion”,那么它会重定向到一个单独的文件。这是沿着线:
http://site/promotion/campaign-name/
重定向到
http://site/promotion.php?campaign=campaign-name
我用下面的代码来实现这一目标:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^promotion/(.*)/$ promotion.php?params=$1 [L]
RewriteRule ^(.*) index.php?page=$1 [L]
</IfModule>
这如预期运作,以链接正确重定向除非没有结尾斜线。例如
http://site/something/thepage/
会的工作,而
http://site/something/thepage
不会。
为了解决这个问题,我试图建立一个301重定向任何URI,没有一个结尾的斜杠到一个URI后面的斜杠。
下面的代码(放置在其他规则之上)适用于某种程度,但是我丢失了文件夹数据。
代码:
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]
的问题?
http://site/something/thepage
重定向到
恐怕在世界上所有的谷歌搜索并没有帮助我,因为我不能完成我的左右脑的mod_rewrite在所有!
感谢任何帮助。
非常好 - 非常感谢你,这已经做到了。 – in2itive