2016-07-15 60 views
0

一个基本的URL重写,我不明白为什么,但:当我用这个怎么做的mod_rewrite

#RewriteRule ^/?r/(.*)$ /index.php?n=$1 [L] 

改写mysite.com/r/somewhatmysite.com/index.php?r=somewhat 的现场工作。

但是,如果我用这个:

#RewriteRule ^/?(.*)$ /index.php?name=$1 [L] 

改写mysite.com/somewhatmysite.com/index.php?r=somewhat, 我的网站停止工作。

我不明白为什么。有人可以帮助我吗?

我怎么能改写mysite.com/somewhatmysite.com/index.php?r=somewhat

+3

如果你想'R = somewhat',那么你为什么要重写'N = $ 1'??? 'n'与'r'不一样。 –

回答

1

你的第二个规则将导致无限循环,因为目标URI /index.php?r=somewhat也匹配.*。最终它会导致500个内部服务器错误。

要解决,你需要避免使用RewriteCond这样重写文件和目录:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?(.+)$ /index.php?r=$1 [L,QSA]