Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess重写为短url句柄异常_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

.htaccess重写为短url句柄异常

.htaccess重写为短url句柄异常,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,以下是我的访问权限: RewriteEngine On RewriteBase / RewriteRule ^about$ about.php RewriteRule ^contact$ contact.php RewriteRule ^user/([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING} 我想做的是当有人访问mysite.com/username时 它将执行以下操作:user.php?uname=$1&%{QUERY\u

以下是我的访问权限:

RewriteEngine On 
RewriteBase /

RewriteRule ^about$ about.php       
RewriteRule ^contact$ contact.php
RewriteRule ^user/([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}
我想做的是当有人访问mysite.com/username时 它将执行以下操作:user.php?uname=$1&%{QUERY\u STRING} 这很简单:
RewriteRule^/([^/]+)?$user.php?uname=$1&%{QUERY\u STRING}

但是如果用户名是一个页面名呢?
例如,如果用户名为about,或contact?有没有添加异常的方法?或者我该如何处理它。

例如,您可以使用重定向

Redirect /about http://mysite.com/about.php

希望这有帮助。

最简单的解决方案是创建用户名黑名单。不允许他人创建与您站点上所需页面匹配的用户名。如果在当前规则上添加[L]标志,它将停止进一步的规则处理,因此您可以在底部添加另一个规则来捕获用户名

RewriteRule ^([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}
当然,即使你没有将用户名列入黑名单,系统也应该可以工作。他们只需要使用/user/about,因为/about URI已经被使用了。

您没有使用L(最后一个标志),这可以解决您的问题。请改用此代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^about/?$ /about.php [L,NC] 
RewriteRule ^contact/?$ /contact.php [L,NC]
RewriteRule ^user/([^/]+)/?$ /user.php?uname=$1 [L,NC,QSA]