我创建了我的.htaccess文件
Options +FollowSymlinks -Indexes
RewriteEngine On
RewriteRule ^login/$ views/sessions/login.php [L]
RewriteRule ^([a-zA-Z]+)/$ views/sessions/$1.php [L]
.... (a dozen line of rewriting)
我网站上的链接的工作方式如下:
mysite.com/login/
访问mysite.com/views/sessions/login.php
但现在我想阻止访问旧链接。
当用户转到mysite.com/views/sessions/login.php
时,会返回404错误或将其直接返回到链接mysite.com/login/
如何屏蔽旧网址?
我添加了[R = 301,NC,L](RewriteRule ^login/$ views/sessions/login.php [R=301,NC,L]
)
但是当我想访问mysite.com/views/sessions/login.php
我有这样的错误:"禁止您无法访问此服务器上的/C:/wamp/www/mysite/views/sessions/login.php。&#34
答案 0 :(得分:1)
您可以在重写网址时添加一个查询字符串参数,请参阅以下代码。我添加了一个查询字符串参数来重定向url。
RewriteCond %{REQUEST_URI} !^/views/sessions/([a-zA-Z]+).php$ [NC]
RewriteRule ^(.*)/$ views/sessions/$1.php?s=old [L]
重定向旧网址:(旧网址将重定向到新网址)
RewriteCond %{QUERY_STRING} !^(.*&)?s=old$ [NC]
RewriteRule ^views/sessions/([a-zA-Z]+).php$ $1/ [R=302,NC,L]
阻止旧网址:(旧网址将被屏蔽)
RewriteCond %{QUERY_STRING} !^(.*&)?s=old$ [NC]
RewriteRule ^views/sessions/([a-zA-Z]+).php$ $1/ [R=401,NC,L]
修改(将查询字符串添加到新网址)
RewriteCond %{REQUEST_URI} !^/views/sessions/([a-zA-Z]+).php$ [NC]
RewriteRule ^(.*)/$ views/sessions/$1.php?%{QUERY_STRING}&s=old [L]
&s=old
不是强制性的,只是为了应用阻止旧网址的条件。您可以使用任何变量而不是它,选择它,因为它不会影响您的程序逻辑。