【问题标题】:Rewrite only specific URL's through .htaccess通过 .htaccess 仅重写特定的 URL
【发布时间】:2011-04-26 19:26:45
【问题描述】:

我为我的网站创建了一个前端控制器。我想通过这个前端控制器将所有请求传递给网站。现在我还在 web 根目录中安装了一些其他软件,现在我正在添加这些文件夹以通过 .htaccess 忽略,这样他们的请求也不会转到前端控制器。我正在做类似下面的事情,

重写引擎开启 RewriteCond $1 !^(folder1|folder2|folder3|robots\.txt) RewriteRule ^(.*)$ index.php [QSA,L]

这目前有效,但有没有办法只为特定域或文件夹添加请求以通过 index.php 传递,例如:www.mysite.com 或 www.mysite.com/folder4 或 mysite.com。

这样我就不必在创建新文件夹时不断添加要忽略的文件夹。

谢谢。

编辑:我会尽量简化。我希望对一个特定文件夹和主站点的所有请求都通过前端控制器。除此之外,所有请求都应照常处理

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    您可以改为使用这些条件来排除任何可以映射到现有文件或目录的请求:

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

    【讨论】:

      【解决方案2】:

      您可以使用 SERVER_NAME 变量:

      RewriteCond %{SERVER_NAME} ! ^(www\.)?mysite\.com$
      

      【讨论】:

      • 好的,我想要的是如果请求是mysite.com 那么请求应该通过 index.php 控制器。如果请求是mysite.com/folder1,那么它不应该通过任何控制器。服务器名称将相同,我只想将控制器仅用于某些文件夹和主站点,而不是全部。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 2020-09-14
      相关资源
      最近更新 更多