Php 如果使用Htaccess中未重写的url,如何重定向用户?

Php 如果使用Htaccess中未重写的url,如何重定向用户?,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我想让它成为这样,当你访问非书面的url,例如这个:website.com/profile.php?name=Alex,你会被重定向到一个404未找到的页面。但如果你访问website.com/profile/Alex,它就会正常工作。我如何才能做到这一点?您可以使用以下规则: Options -MultiViews RewriteEngine On # 404 if using internal URL directly RewriteCond %{THE_REQUEST} /profile

我想让它成为这样,当你访问非书面的url,例如这个:website.com/profile.php?name=Alex,你会被重定向到一个404未找到的页面。但如果你访问website.com/profile/Alex,它就会正常工作。我如何才能做到这一点?

您可以使用以下规则:

Options -MultiViews
RewriteEngine On

# 404 if using internal URL directly
RewriteCond %{THE_REQUEST} /profile\.php\?name= [NC]
RewriteRule ^ - [R=404,L]

# rewrite for /profile/alex
RewriteRule ^(profile)/([\w-]+)/?$ $1.php?name=$2 [L,QSA,NC]

我还是有个问题。。每当使用以下命令调用404文档时:ErrorDocument 404/alliance/404.php将仅重定向到404页面以获取第一条规则。假设我使用了你给我的东西两次,每一页一次,它只会将我重定向到404页,用于.htaccess文档中的第一条规则。对于其余的规则,它会将我重定向到默认的404页面。带有“另外,在尝试使用ErrorDocument处理请求时遇到404 Not Found错误”的文本。