這裏是我當前htaccess文件:的.htaccess多重寫規則/優先處理
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.website\.com [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.website\.com [NC]
RewriteRule ^(.*)$ http://www.website.com/gotourl.php?urlid=?%1 [L]
RewriteRule ^(\w+)$ ./gotourl.php?urlid=$1 [NC,L]
RewriteRule ^(\w+)/$ ./gotourl.php?urlid=$1 [NC,L]
有問題的網站是一個縮短網址我正在測試/開發和個人使用。上面的代碼可能並不理想,因爲我不熟悉.htaccess,並通過Google搜索和測試進行了設置。這就是我想要的URL縮短方面:
http://website.com/1234 -> http://website.com/gotourl.php?urlid=1234
http://website.com/1234/ -> http://website.com/gotourl.php?urlid=1234
問題是我無法弄清楚如何讓它忽略某些目錄。我想具體的目錄去特定的網頁:
http://website.com/img (or) http://website.com/img/ -> http://website.com/img.php
http://website.com/img/1234 (or) http://website.com/img/1234/ -> http://website.com/viewimage.php?imgid=1234
主要的問題是我不知道如何正確地做到這一點,方式我已經試過這樣做將永遠改寫爲:
http://website.com/gotourl.php?urlid=XXXX
或最終在一個無限循環的重定向,而不是去我想要的特定頁面。任何幫助表示讚賞。
從本質上說,我尋求幫助寫我的htaccess做到以下幾點:
URL user visits -> URL user sees
http://website.com/img -> http://website.com/img.php
http://website.com/img/XXXX -> http://website.com/viewimage.php?imgid=XXXX
http://website.com/XXXX -> http://website.com/gotourl.php?urlid=XXXX
的所有路徑應該有或沒有結尾的斜線工作。
尋求幫助讓它做到這一點,也許有點解釋每一行的實際意義,所以我可以從中學習。
只是一個供參考,'http:// website.com/img'不是子域。子域url的示例:'http:// test.website.com/img'。 'test'是子域。 'img'是路徑。即使'www'技術上也是一個網站的子域名。 –
@JonathanKuhn - Duh。我也知道:P對不起。現在編輯擺脫所有這些子域名。我的意思是目錄:P – Jetteh22
您可能只需使用如下條件:'RewriteCond%{REQUEST_FILENAME} .php -f'來檢查請求的路徑是否存在,然後重寫到該文件。 –