2012-07-26 58 views
0

我工作的一個網站,我想要的網址上網址重寫無法正常工作; 404錯誤,並沒有改變URL

www.example.com/directory1/states/california.php 

指向

www.example.com/directory1/california 

爲城市頁面類似的URL變化,以及:

www.example.com/directory1/cities/miami.php 

應指向

www.example.com/directory1/miami 

我用下面的規則在我訪問文件更改URL:

RewriteRule ^directory1/(alabama|alaska|arizona|arkansas|california|colorado|connecticut|delaware|florida|georgia|guam|hawaii|idaho|illinois|indiana|iowa|kansas|kentucky|louisiana|maine|maryland|massachusetts|michigan|minnesota|mississippi|missouri|montana|nationwide|nebraska|nevada|new_hampshire|new_jersey|new_mexico|new_york|north_carolina|north_dakota|ohio|oklahoma|oregon|pennsylvania|rhode_island|south_carolina|south_dakota|tennesee|texas|us_virgin_islands|utah|vermont|virginia|washington|west_virigina|wisconsin|wyoming)$ /directory1/states/$1.php [L] 

RewriteRule ^directory1/(.*)$ /directory1/cities/$1.php [L] 

然而,沒有在地址欄的變化,我總是得到沒有找到404。當我使用htaccess checker進行測試時,輸出url總是正確的。我的規則有什麼問題?有沒有辦法測試mod_rewrite如何運行?

回答

1

某些服務器配置要求您在.htaccess文件中打開重寫引擎。就在頂部:

RewriteEngine on 

我也知道該文件的路徑開始有些服務器CONFIGS用/(由於已被上請求運行其他重寫規則),這樣也許能夠爲實現這一目標是/結束那裏的規則:

RewriteRule ^/?directory1/(alabama|alaska|arizona|arkansas|california|colorado|connecticut|delaware|florida|georgia|guam|hawaii|idaho|illinois|indiana|iowa|kansas|kentucky|louisiana|maine|maryland|massachusetts|michigan|minnesota|mississippi|missouri|montana|nationwide|nebraska|nevada|new_hampshire|new_jersey|new_mexico|new_york|north_carolina|north_dakota|ohio|oklahoma|oregon|pennsylvania|rhode_island|south_carolina|south_dakota|tennesee|texas|us_virgin_islands|utah|vermont|virginia|washington|west_virigina|wisconsin|wyoming)/?$ /directory1/states/$1.php [L] 

RewriteRule ^/?directory1/(.*)/?$ /directory1/cities/$1.php [L] 
+0

是的,我有我RewriteEngine敘述,我試圖添加的反斜槓,但無濟於事:/ – 2012-07-26 17:57:04

+0

也許嘗試添加規則,看是否有規則,在被處理。 htaccess文件。也許模塊沒有安裝,或者有更高的文件阻止它。我最喜歡的是這樣的: RewriteRule ^。* $/[F,L] 如果它工作,你會得到Forbidden錯誤頁上每個URL擊中該規則。 – 2012-07-26 21:47:24