我想把URL设置成www.example.comusernamefor 类似于www.example.comprofile.php?name=username。
我在我的.htaccess中试了一下。
RewriteEngine on
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
但这使得它对所有的页面都有效。我希望只有当URL是www.example.comusername的时候才可以工作,但是对于www.example.comusers.php也可以工作。
如果user.php或其他.php文件被打开,那么重写规则就不应该适用于它。
如何实现这个目标?
你可以添加一个重写条件的请求uriwhich匹配所有不以.php结尾的东西。
例如:: (未测试)
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
检查 uri 是否真的是一个文件在框架中非常流行,但它比以 .php 结尾的字符串匹配慢,因为每次请求 apache 都需要检查文件是否存在于磁盘上。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]