【问题标题】:.htaccess issue, existing .php files and search.php.htaccess 问题、现有 .php 文件和 search.php
【发布时间】:2011-09-27 14:45:42
【问题描述】:

我刚开始使用 .htaccess 获取格式良好的网址,但我不确定自己做得对。

我当前的 .htaccess 文件如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/(.*) search.php?query=$1 [L]
RewriteRule !\.(gif|jpg|ico|css|js|txt|xml|png|swf)$ index.php

我想要的是 mysite.com/home/56/page-title 转到 index.php ,在那里我过滤掉数字并加载正确的索引页面,这工作正常。

在此之前,我想检查 url 是否指向 search.php,如果是,则重定向到 mysite.com/search/the-search-term,这也可以正常工作。

如果我尝试访问特定的 .php 文件(例如 mysite.com/control_panel.php),则不起作用的情况是——它只是将我带到 index.php,但我认为以下行阻止了这种情况的发生?

RewriteCond %{REQUEST_FILENAME} !-f

如果有人可以向我解释,那就太好了:)

谢谢!

【问题讨论】:

    标签: regex .htaccess url-rewriting


    【解决方案1】:

    1.规则顺序很重要

    2. RewriteCond 指令仅适用于其后的 ONE RewriteRule。如果您需要将相同的条件应用于多个规则,则必须多次编写它们或更改重写处理逻辑(可用多种方法)。

    试试这个:

    RewriteEngine On
    
    RewriteRule ^search/(.*) search.php?query=$1 [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !\.(gif|jpg|ico|css|js|txt|xml|png|swf)$ index.php [L]
    

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多