2013-12-19 50 views
0

我在我的.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

我終於工作了這一點。我查看了服務器上的$ _SERVER變量,發現重寫的url存儲在$ _SERVER ['QUERY_STRING']中。不要問我爲什麼......

所以我使用這個變量而不是$ _SERVER ['PATH_INFO'],並且每件事情都能夠再次完美地工作。 像這樣的URL:/ article/lala-00000000164 /被無形地改寫爲:/ article/lala/00000000164 /。

感謝您的幫助!

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] 
+0

謝謝,我已經試過,並且我得到/ article/lala/00000000164 /在這臺服務器上找不到。所以我試過:article /([a-zA-z0-9 \ - ] +) - ([0-9] +)/ index.php?/ article/$ 1/$ 2/[L]。現在我被重定向到index.php,但重寫不起作用。 $ _SERVER ['REQUEST_URI']表示url是/ article/lala-00000000164 /而不是/ article/lala/00000000164/ – user2588917

+0

@ user2588917你想讓它重定向瀏覽器還是什麼?因爲$ _SERVER ['REQUEST_URI']'是瀏覽器請求的內容,而不是** mod_rewrite改變它的內容。 –

+0

嗨,是的,我想我明白我要去哪裏錯了。我在本地使用$ _SERVER ['PATH_INFO']。但是這個變量沒有在我的服務器上設置。所以我用$ _SERVER ['REQUEST_URI']替換它,這就是問題的來源。使用$ _SERVER ['PATH_INFO'],像這樣的URL:/ article/lala-00000000164 /被轉換爲/ article/lala/00000000164 /,所以我可以輕鬆解析它。但$ _SERVER ['REQUEST_URI']中的網址沒有被轉換...是否有任何我可以得到這個以我喜歡的方式工作? – user2588917