我想實現漂亮的URL的基本URL重定向,並且由於圖像,CSS等也駐留在相同的路徑我需要確保如果URL是訪問時沒有結尾的斜槓,它會自動添加。如何做mod_rewrite重定向到相對URL
這工作得很好,如果我把絕對URL是這樣的:
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ http://www.mydomain.com/myParentDir/$1/ [R,nc,L]
但如果我更改爲相對URL,這樣我就不必在每次我在文件夾中移動的東西的時間去改變它,這根本行不通。
這些是我嘗試了所有不工作,或重定向我喜歡的服務器的實際內部目錄路徑/的public_html/...:
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ ./myParentDir/$1/ [R,nc,L]
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ myParentDir/$1/ [R,nc,L]
什麼是做了正確的方式URL重定向因此,如果用戶輸入類似:
http://www.mydomain.com/somedir/myVirtualParentDir/myVirtualSubdir
他被重定向到(通過HTTP 301或302):
http://www.mydomain.com/somedir/myVirtualParentDir/myVirtualSubdir/
謝謝。
編輯:添加一些更多的細節,因爲它似乎並不清楚。 可以說我正在實施一個畫廊,並且我想要使用mod_rewrite製作漂亮的URL。 所以,我想有網址如下:
http://www.mydomain.com/somedir/galleries/cats
這表明貓的縮略圖,同時:
http://www.mydomain.com/somedir/galleries/cats/persian
其中顯示了從所有的貓,命名爲波斯的縮略圖一個圖像。 所以實際上的物理目錄結構和重寫情況如下:
http://www.domain.com/somedir/gallery.php?category=cats&image=persian
所以我希望做的就是把/ somedir .htaccess文件,其捕捉到/畫廊製作和取決於所有請求以下是虛擬子目錄,用它們作爲重寫佔位符,用2重寫規則:
RewriteRule ^galleries/(A-Z0-9_-]+)/$ ./gallery.php?category=$1 [nc]
RewriteRule ^galleries/(A-Z0-9_-]+)/+([A-Z0-9_-]+)$ ./gallery.php?category=$1&image=$2 [nc]
現在的問題是,事實上,畫廊腳本需要一些CSS,JavaScript和圖片,位於http://www.domain.com/somedir/css,http://www.domain.com/somedir/js和http://www.domain.com/somedir/images。
我不想硬編碼任何絕對URL,所以CSS,JS和圖片將被引用到使用相對URL(./css,./js,./images等)。所以我可以做重寫URL如下:
RewriteRule ^galleries/[A-Z0-9_-]+/css/(.*)$ ./css/$1 [nc]
的問題是,由於http://www.domain.com/somedir/galleries/cats是一個虛擬目錄,上面只有當用戶類型的作品:
http://www.domain.com/somedir/gallaries/cats/
如果用戶省略了結尾的斜線mod_dir不會添加它,因爲實際上這個目錄實際上並不存在。
如果我把一個重定向重寫與它的工作絕對URL:
RewriteRule ^galleries/([A-Z0-9_-]+)$ http://www.mydomain.com/subdir/galleries/$1/ [R,nc,L]
但我不希望有URL前綴硬編碼,因爲我希望能夠把這個在我想要的域名在我想要的子目錄,所以我想這:
RewriteRule ^galleries/([A-Z0-9_-]+)$ galleries/$1/ [R,nc,L]
而是將其重定向到:
http://www.mydomain.com/home/myaccount/public_html/subdir/galleries/theRest
這顯然不是我想要的。
編輯:進一步澄清
我正在尋找解決的辦法是避免硬編碼的域名或文件夾路徑在.htaccess。我正在尋找一種解決方案,如果我將.htaccess與其他腳本和資源打包在一起,無論用戶將其解壓到他的Web服務器上,它都可以直接使用。所有的作品都是這樣的,除了這個尾隨的斜線問題。
因此,任何涉及在任何方式下對父目錄或web服務器的路徑進行硬編碼的解決方案都不是我所期待的。
@DoktorJ請問編輯我的帖子回答你的問題? –
你應該選擇你接受的答案,如果這裏有任何幫助。 – sjas