.htaccess:Slugs和文件扩展名

时间:2016-06-24 15:16:30

标签: php .htaccess

我正在寻找一种禁止访问文件的方法,如果不是通过slug访问的话。例如,我有/members.php?page=login。我想通过强制用户访问/login(将长网址重定向到一个短网段)来阻止它,并阻止从长网址直接访问。

当我尝试做类似的事情时:

RewriteRule ^members.php?page=login login [L,R=301]
RewriteRule ^login members.php?page=login [L]

它变成了一个无限循环(正如firefox所说:" Firefox检测到服务器正在以永远不会完成的方式重定向该地址的请求。")。

我启用了"选项"在文件的开头(Options +FollowSymLinks -MultiViews

我怎样才能做对?

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^login$ index.php?page=login [L]

答案 1 :(得分:0)

您可以使用以下内容:

RewriteEngine on
# externally redirect "/members.php?page=login" to "/login"
RewriteCond %{THE_REQUEST} /members\.php\?page=login [NC]
RewriteRule ^ /login [L,R]
#rewrite "/login" back to "/members.php?page=login"
RewriteRule ^login members.php?page=login [L]