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

问题描述 投票:0回答:1

这是我的.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”和根“/”以外的任何内容重定向到redirect.php,并将request_url(斜杠后面的位)替换为短代码GET变量。

但是,上面的文件给了我一个错误:“页面没有正确重定向”

php apache .htaccess mod-rewrite
1个回答
0
投票

几个问题:

  1. login
    的模式也将匹配重写的
    login_reg.php
  2. RewriteCond
    仅适用于紧接着的下一个
    RewriteRule
    ,因此最后一条规则是无限重写所有内容。
  3. 标志必须位于单个
    [...]

您可以在 .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]
© www.soinside.com 2019 - 2024. All rights reserved.