Apache mod_rewrite-将页面重定向到索引

Apache mod_rewrite-将页面重定向到索引,apache,mod-rewrite,redirect,Apache,Mod Rewrite,Redirect,我想阻止人们访问某些服务器上的登录URL 理想情况下,我希望解决方案不必引用域(有许多域和许多服务器环境),并且我希望将规则放在全局httpd.conf中,而不是放在单个vhost中 我尝试过各种各样的修改,但都没有用,或者表现糟糕,例如 RewriteRule ^/login$ /index.php [R,L] RewriteRule ^login/?$ $1/$2 [R=301,L] 一个警告是,它需要与我的URL重写一起工作 <IfModule mod_rewrite.c>

我想阻止人们访问某些服务器上的登录URL

理想情况下,我希望解决方案不必引用域(有许多域和许多服务器环境),并且我希望将规则放在全局httpd.conf中,而不是放在单个vhost中

我尝试过各种各样的修改,但都没有用,或者表现糟糕,例如

RewriteRule ^/login$ /index.php [R,L]
RewriteRule ^login/?$ $1/$2 [R=301,L]
一个警告是,它需要与我的URL重写一起工作

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>
去这里

http://mysite.co.uk/

以下内容应将您提供的示例重定向到站点根目录:

RewriteEngine On
RewriteRule ^/(index.php/)?login/?$ / [R,L]

只要将它们放在现有规则之前,它们就应该做您想做的事情。

编写正确的重写规则或将其放在httpd.conf中的方法也是如此。根据您的解释
重写规则login/?$/[R=301,L]
应该这样做。您的httpd.conf文件中的目录容器中是否有此规则?我的问题是编写正确的重写规则,以及将其放在全局配置的何处。我可以通过本地MAMP设置使其工作。我不知道如何将登录重写移到httpd.conf,同时保留单个vhost文件。我认为您有两个选项,但都需要编辑每个vhost配置。第一个选项:只需在vhost中使用一个简单的
Include/path/to/general\u rewrite\u config
。第二个选项:将重写规则放在一个目录容器中的全局文件中,即所有vhost的根路径中(仅在这种情况下有效)
RewriteEngine On….
并在vhost容器中使用
RewriteEngine-On-RewriteOptions-inherit
。明白了。让我震惊的是“重写”。我认为这无关紧要,因为我现有的重写已经开始工作了,但是登录重写被忽略了。使用@arco444 snippet进行设置,并按照其他建议进行输入。
RewriteEngine On
RewriteRule ^/(index.php/)?login/?$ / [R,L]