2012-05-29 89 views
0

我想使它所以,当我进入http://website.com/5/sometitle它打开/displayvideo.php?id=5 &标题= sometitle,这个目前与下面的代码mod_rewrite的,规则重叠

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/(.*)$ /displayvideo.php?id=$1&title=$2 [L] 

然而我也希望让这个当我去http://website.com/5它会去/displayvideo.php?id=5 我已通过添加

RewriteRule ^(.*)$ /displayvideo.php?id=$1 [L] 

但是试过这个,仅仅用了一堆结束怪异的垃圾像无法打开实体l文件,就像/somefile.php一样,因为它会认为somefile.php应该是由重写程序编号的标记

这样做还会导致其他重写规则失效,因为它会自动认为/displayvideo.php? id = $ 1是新规则的标签。

基本上在网站上的每一页变成了500内部服务器错误

任何人知道如何解决这一问题? 感谢

回答

2

这应该这样做。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9]+)/(.+)$ /displayvideo.php?id=$1&title=$2 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9]+)$ /displayvideo.php?id=$1 [L] 
+0

完美地工作,谢谢^^ – user1071461

1

优化你的正则表达式的:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^([0-9]+)$ /displayvideo.php?id=$1 [L] 
RewriteRule ^([0-9]+)/(.*)$ /displayvideo.php?id=$1&title=$2 [L]