简体   繁体   English

.htaccess:Slugs和文件扩展名

[英].htaccess: Slugs and file extensions

I'm looking for a way to disable access to file, if not accessed through slug. 我正在寻找一种方法来禁止访问文件,如果没有通过slug访问。 for example, I have /members.php?page=login . 例如,我有/members.php?page=login I want to change it, by forcing the user access /login (redirect the long url into a short slug) and prevent direct access from the long url. 我想通过强制用户访问/login (将长URL重定向到一个短的slu)来改变它,并阻止从长URL直接访问。

When I try to do something like: 当我尝试做类似的事情:

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

It turns into an infinite loop (as firefox says: "Firefox has detected that the server is redirecting the request for this address in a way that will never complete."). 它变成了一个无限循环(正如firefox所说:“Firefox检测到服务器正在以永远不会完成的方式重定向该地址的请求。”)。

I've enabled the "options" at the beginning of file ( Options +FollowSymLinks -MultiViews ) 我在文件开头启用了“选项”( Options +FollowSymLinks -MultiViews

How can I make it right? 我怎么能做对的?

Thanks. 谢谢。

try this: 尝试这个:

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

You can use the following : 您可以使用以下内容:

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]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM