代码之家  ›  专栏  ›  技术社区  ›  lewis

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

  •  1
  • lewis  · 技术社区  · 2 年前

    这是我的.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(斜杠后面的位)替换为shortcode GET变量。

    然而,上面的文件给了我一个错误:“页面重定向不正确”

    1 回复  |  直到 2 年前
        1
  •  1
  •   anubhava    2 年前

    少数问题:

    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]