url重写不能在我的服务器上运行

时间:2013-12-19 03:19:10

标签: .htaccess url-rewriting

我的.htaccess中我的网址重写有问题。它们在本地运行良好但由于某些原因我不明白,它们不能在我的服务器上运行。我能够通过在index.php之后添加问号来使我的第一条规则工作(我也不明白为什么它需要这个问号):

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index\.php?/$1 [L]

但是我仍然无法找到一种方法让这条规则在我的服务器上运行。

RewriteRule article/([a-zA-z0-9\-]+)-([0-9]+)/ article/$1/$2/ [L]

你能告诉我我做错了什么,为什么它在本地运行但不在我的服务器上?谢谢!!

2 个答案:

答案 0 :(得分:0)

我猜您需要问号,因为您的服务器未设置为处理PATH_INFO。但是您需要之前的文章规则

RewriteRule article/([a-zA-z0-9\-]+)-([0-9]+)/ article/$1/$2/ [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index\.php?/$1 [L]

答案 1 :(得分:0)

我终于完成了这项工作。我查看了服务器上的$ _SERVER变量,发现重写的url存储在$ _SERVER ['QUERY_STRING']中。不要问我为什么......

所以我使用这个变量而不是$ _SERVER ['PATH_INFO'],并且每件事情都能完美地运作。 像这样的URL:/ article / lala-00000000164 /被无形地重写为:/ article / lala / 00000000164 /.

感谢您的帮助!!