0
首先,這裏是我的.htaccess:
RewriteEngine On
Options FollowSymLinks
# check if url ends in a slash and if it does redirect to same url without one
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(([^/]+/)*([^/.]+))/\ HTTP/
RewriteRule ^(([^/]+/)*([^/.]+))/$ http://localhost/example/$1 [R=301,L]
# extionless url rewrite for urls in form example.com/cmd
RewriteRule ^([^/.]+)$ index.php?cmd=$1 [L,QSA]
# extionless url rewrite for urls in form example.com/cmd/action
RewriteRule ^([^/]+)/([^/.]+)$ index.php?cmd=$1&action=$2 [L,QSA]
# extionless url rewrite for urls in form example.com/cmd/ajax
RewriteRule ^([^/]+)/([^/]+)/([^/.]+)$ index.php?cmd=$1&action=$2&ajax=$3 [L,QSA]
所以這個工程的URL重寫罰款。但是,在向PHP提交表單後,當我查看Firebug時,它的狀態爲「永久移動」。我很確定問題是這條線:
RewriteRule ^(([^/]+/)*([^/.]+))/$ http://localhost/example/$1 [R=301,L]
但我不知道如何解決它。我想保持mod_rewrite完全按照它的功能來做,但我需要修復這個問題。
感謝您的幫助!
編輯:我也想提一下,如果我使用jQuery的.ajax發送數據從JavaScript到PHP並有類型發佈,它確實工作。而且,$ _GET無論如何工作。從HTML發送到PHP時,$ _POST不起作用。
那麼我該如何解決這個問題呢?我意識到它正在迷失。但是我對mod_rewrites知之甚少,無法知道如何修改我的正確工作。順便說一句,感謝您的快速回復! – user1513171 2012-07-09 21:47:23
你在做POST請求時會傳遞查詢變量的原因是什麼?這些查詢變量可以作爲隱藏字段嵌入到表單中。 – 2012-07-09 21:48:55
是的,這些查詢變量是必要的。我在我正在創建的框架中設置了一個前端控制器模式,而cmd和action是幾乎可以運行它的兩個變量。因此,如果用戶轉到/ example/profile/someThing,我的框架將發送用戶到index.php?cmd = profile&action = someThing,然後index.php(我的前端控制器)使用配置文件調用正確的命令,和一些Thing調用命令的正確方法。 – user1513171 2012-07-09 22:22:42