apache htaccess重写了一些网址,但将所有其他网址发送到另一个页面

lhcgjxsq  于 2023-11-21  发布在  Apache
关注(0)|答案(1)|浏览(195)

这是我的.htaccess文件:

RewriteEngine On
DirectoryIndex index.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^login      login_reg.php [L] [NC]
RewriteRule ^(.+)       redirect.php?shortcode=$1 [L] [NC]

字符串
我想要的是除了'/login'和root '/'之外的任何内容都被重定向到redirect.php,并将request_url(斜杠后面的位)替换为短代码GET变量。
然而,上面的文件给了我一个错误:“页面没有正确重定向”

ykejflvf

ykejflvf1#

几个问题:

  1. login的模式也将匹配重写的login_reg.php
  2. RewriteCond只适用于下一个RewriteRule,因此最后一个规则是无限重写所有内容。
    1.标志需要在单个[...]
    您可以在.htaccess中使用这些规则:
DirectoryIndex index.php
RewriteEngine On

RewriteRule ^login/?$ login_reg.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) redirect.php?shortcode=$1 [L,NC,QSA]

字符串

相关问题