.htaccess mod_rewrite类别的RewriteRule

时间:2012-08-31 12:09:15

标签: .htaccess mod-rewrite

我希望http://www.mywebsite.com/cd2012/legal而不是http://www.mywebsite.com/cd2012/index.php?legal=1

我试过了

Options +FollowSymLinks
RewriteEngine on
RewriteRule guarantees/(.*) cd2012/index\.php/legal=$1 [R=301,L]
RewriteRule guarantees cd2012/index\.php/legal=$1 [R=301,L]
RewriteRule ^guarantees/$ cd2012/index\.php/legal=$1 [R=301,L]

他们都没有工作。

3 个答案:

答案 0 :(得分:2)

如果要重写,则不希望使用[R=301,L],因为这基本上意味着“告诉用户浏览器此文档永久移动到此位置”

你也不应该逃避最后的道路,因为它不是正则表达式。

相反,这样做(根据你的例子):

RewriteEngine on
RewriteRule ^cd2012/?$ cd2012/index.php
RewriteRule ^cd2012/(.*) cd2012/index.php?$1=1

答案 1 :(得分:1)

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^([a-zA-Z0-9]+)/$ index.php?$1=1 [L]
   RewriteRule ^([a-zA-Z0-9]+)$ index.php?$1=1 [L]
</IfModule>

现在这对我来说是神奇的。

答案 2 :(得分:0)

试试这个:

RewriteEngine on
RewriteBase /
RewriteRule ^cd2012/legal$ cd2012/index.php?legal=1 [L]