2017-05-08 55 views
1

我在理解URL重寫規則時遇到了一些問題。如何使用RewriteRule命令在.htaccess中重寫文件夾路徑

我的網址是

http://example.com/katalog/selection/book.php 

,我願與RewriteRule將URL更改爲

http://example.com/selection 

我的代碼:

RewriteEngine On 
RewriteRule ^http://example.com/katalog/selection/book.php$ http://example.com/selection [R=301,L] 

,但我不能訪問新路徑。

+1

RewriteRule在完整的URL上不匹配,它只匹配URL的路徑組件。 – CBroe

回答

1

由於CBroe在評論中提到,RewriteRule模式僅匹配URL路徑,而不匹配scheme +主機名+路徑。但是,「但我無法訪問新路徑」建議您要在內部重寫/selection/katalog/selection/book.php的請求 - 這與您正在嘗試執行的操作完全相反。 (雖然/selection看起來有點太一般?)

嘗試類似的東西在你的根.htaccess文件以下。

RewriteEngine On 
RewriteRule ^selection$ katalog/selection/book.php [L] 

RewriteRule模式不與每個目錄.htaccess文件斜線開頭。

現在請求URL /selection並請求將內部被重寫(可見網址並沒有變化)的文件/katalog/selection/book.php

請注意,在測試之前,您需要先清空瀏覽器緩存,因爲301由瀏覽器緩存。