2012-04-08 80 views
0

我一直在使用重寫規則一段時間,但這很奇怪。.htaccess重寫規則不會想要這樣工作

該網站託管在dev.domain.com,htaccess的代碼是

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/


RewriteRule ^order/([^/]+) order.php?id=$1 [QSA] 
... 

但是當我去http://dev.domain.com/order/4的$ _GET沒有被通過,之前從來沒有過這樣的問題,有人有主意嗎?

+0

如重寫是不會發生呢?或者你會被重寫爲order.php,但沒有查詢字符串?如果重寫沒有發生,請檢查Apache是​​否啓用了[.htaccess](http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride) – 2012-04-08 13:34:55

+0

重寫發生,但是查詢字符串isn' t正在通過 – 2012-04-08 13:38:48

+0

令人驚訝的/命令?id = 4的作品...可能是.htaccess被禁用,它使用一些國防部找到文件?例如它沒有找到文件順序,所以它搜索order.php並加載它? – 2012-04-08 13:41:36

回答

0

問題是Nginx的不支持的.htaccess可言,必須做它自己的方式..

0
  1. 檢查AllowOverride是不是限制你。例如,如果它設置爲None - 這將完全禁用整個.htaccess支持,並且Apache根本不會在磁盤上查找.htaccess文件。

  2. 檢查MultiViews是否啓用。這已知會與mod_rewrite一起產生意想不到的結果。

  3. 將「L」標誌添加到規則 - [L,QSA]以停止在該點的規則執行。也許你有其他規則,你沒有發佈在這裏,影響行爲。

+0

我在哪裏檢查? php.ini中?或者我可以通過phpinfo()來做到嗎? – 2012-04-08 13:51:23

+0

'AllowOverride'和'MultiViews'都是_Apache_配置。在_httpd.conf_和_virtual host_配置文件中檢查它們 – poncha 2012-04-08 13:52:27

+0

通過它的外觀(從我在上面的註釋中看到的,指出'/ order?id = 4'起作用)您確實啓用了'MultiViews'。 – poncha 2012-04-08 13:54:08