【问题标题】:mod_rewrite all requests to one file except particular directoriesmod_rewrite 对一个文件的所有请求,除了特定目录
【发布时间】:2014-01-18 18:35:44
【问题描述】:

我有一个网站,我想将我网站上的所有请求重写为一个页面。但是,如果有对特定子目录的请求,我希望像往常一样处理这些请求。

这是我当前的 .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^lib/(.*)$ lib/$1 [END]
RewriteRule ^scripts/(.*)$ scripts/$1 [END]
RewriteRule ^styles/(.*)$ styles/$1 [END]
RewriteRule ^tpl/(.*)$ tpl/$1 [END]
RewriteRule ^services/(\w+)$ services/$1.php [END]
RewriteRule ^services/(\w+)/(\w+)$ services/$1.php?id=$2 [END]
RewriteRule ^.*$ index.html [END]
</IfModule>

如果我去site/scripts/ascript.js 它可以工作:脚本已交付。除 lib 规则外,所有规则都有效。

如果我转到site/lib/something.js 它不起作用,则传递 index.html。

为什么库不工作?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    有这样的规则:

    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^lib/(.*)$ lib/$1 [END]
    RewriteRule ^scripts/(.*)$ scripts/$1 [END]
    RewriteRule ^styles/(.*)$ styles/$1 [END]
    RewriteRule ^tpl/(.*)$ tpl/$1 [END]
    RewriteRule ^services/(\w+)$ services/$1.php [END]
    RewriteRule ^services/(\w+)/(\w+)$ services/$1.php?id=$2 [END]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.+$ index.html [END]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2016-07-13
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多