2011-04-28 75 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