【问题标题】:htaccess conditions + url rewritehtaccess 条件 + url 重写
【发布时间】:2009-11-09 22:31:20
【问题描述】:

目前,我的 htaccess 中有设置,以便 example.com/dept/noc 转到:example.com/index.php?dept=dept&n=noc 使用

RewriteEngine On
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
RewriteCond %{SERVER_PORT} 80

我有一个名为 upload 的文件夹,我如何确保 /upload/ 文件夹的 url 重写无效(例外),因为

example.com/upload/file.doc 不起作用?

【问题讨论】:

  • 添加一个带异常的重写条件?

标签: apache .htaccess url-rewriting


【解决方案1】:

试试:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/upload/.*
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
RewriteCond %{SERVER_PORT} 80

【讨论】:

    【解决方案2】:

    如果 URL 直接匹配现有文件或目录,则更通用的方法是添加不重写条件:

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

    这样您就不必在重写规则中维护 /upload、/images 等文件夹的列表。如果 /upload 中不存在 file.doc,则重写将完成。

    【讨论】:

      【解决方案3】:

      您可以像这样比较特定组的匹配:

      RewriteCond $1 !=upload
      RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
      

      请注意,!= 表示按字典顺序比较,但您也可以使用正则表达式:

      RewriteCond $1 !^upload$
      RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-31
        • 2011-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 2019-04-16
        • 1970-01-01
        相关资源
        最近更新 更多