【问题标题】:Using Rewritebase in .htaccess在 .htaccess 中使用 Rewritebase
【发布时间】:2016-03-18 22:47:30
【问题描述】:

我正在使用 .htaccess 将所有对 http://domain/site1/api/ 的调用重定向到 /site1/api/ 文件夹中的 index.php。这个 index.php 是一个 rest api 的入口点。

# /site1/api/.htaccess
RewriteEngine On
RewriteBase /site1/api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

它工作正常,但有没有比使用硬编码的 RewriteBase 更好的方法? 我希望这两个网址可以工作:http://site1.domain/api/http://domain/site1/api/

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    您可以使用环境变量来创建一个动态基础。所以在你的 htaccess 的最顶端,可能是这样的:

    RewriteCond %{ENV:BASE} ^$
    RewriteCond $1::%{REQUEST_URI} ^(.*)::(.*?)\1$
    RewriteRule ^(.*)$ - [ENV=BASE:%2]
    

    所以“BASE”变量变为/site1/api/。然后你会像这样使用它:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ %{ENV:BASE}/index.php [QSA,L]
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2013-05-17
      • 2013-08-27
      • 2020-06-21
      • 1970-01-01
      • 2010-10-16
      • 2015-11-16
      • 1970-01-01
      • 2017-08-22
      相关资源
      最近更新 更多