2011-04-28 73 views
0

我這裏有一個網址colomn像this-is-the-title.php 我要積極的mod_rewrite與數據庫:的mod_rewrite和職稱名「.php」擴展

Options +FollowSymlinks 
RewriteEngine On 
RewriteRule ^([a-zA-Z0-9-/]+)$ news.php?url=$1 
RewriteRule ^([a-zA-Z0-9-/]+)/$ news.php?url=$1 

但我有問題,.php擴展。此規則僅適用於this-is-the-title而非this-is-the-title.php。有沒有辦法使用擴展名爲.php的標題來激活mod重寫,或者我必須更改標題?

在此先感謝

回答

4

你重寫規則不允許點字符...如果你想something.php匹配,使用:

^([a-zA-Z0-9-/.]+)$

我還簡化了其實還有可能是一個尾隨斜線:由於斜線已經被允許,所以尾部斜線也會匹配。

不要忘記添加一些rewriteconds避免重寫現有的目錄或文件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

順便說一句,添加PHP擴展到重寫URL後沒有任何意義,你應該堅持清潔網址根本沒有擴展。

所以,你最終與服用點是這樣的:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([-/.a-zA-Z0-9]+)$ news.php?url=$1 [QSA,L] 
+0

進入方形parentesys有沒有必要逃生。) – Eineki 2011-04-28 14:50:52

+0

啊謝謝,改了它 – Capsule 2011-04-28 14:54:47

0

可能使用類似

RewriteRule ^([a-zA-Z0-9-/]+)\.php$ news.php?url=$1 [L] 

的規則?

+1

尼斯重寫循環;-) – Capsule 2011-04-28 14:51:41

+0

操作,也許這種方式? ;) – Eineki 2011-04-28 15:04:29

+0

我在想他只需要一個規則來匹配url來重寫,而不是整個集合。 – Eineki 2011-04-29 08:09:45