2017-05-09 120 views
1

有沒有可能用全局獲取變量來重寫url的,而不是特定的文件?爲.htaccess重寫規則

更改

http://example.com/{something}?id=1 

要:

http://example.com/{something}/id/1 

或者無字ID:

http://example.com/{something}/1 

這是我走到這一步:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.phtml 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.phtml 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 

有了這個我可以刪除.phtml擴展名

我希望有一個具體的答案!

+0

問正確的問題:是否可以在替換中使用模式的匹配部分?答案是肯定的,文檔解釋瞭如何。 – CBroe

+0

@CBroe我不明白這個問題,也沒有答案。你在說什麼文件? – joostdelange

+0

你怎麼沒有通過檢查你想使用的技術的文檔來啓動? http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule – CBroe

回答

0

我假設的東西是一個PHP文件,

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+)/id/([\d]+)$ $1.php?id=$2 [L] #with id in between 

RewriteRule ^([\w-]+)/([\d]+)$ $1.php?id=$2 [L] #without id in between 

你必須確保規則不衝突。

+1

非常感謝!這像一個魅力。標記爲正確的答案。 – joostdelange

+0

只有數字纔有可能嗎? – joostdelange

+0

表達式中的'\ d'只允許編號。 –