我的.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]
你能告诉我我做错了什么,为什么它在本地运行但不在我的服务器上?谢谢!!
答案 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 /.
感谢您的帮助!!