RewriteRule在线和本地子文件夹上工作

时间:2014-06-26 20:27:11

标签: .htaccess mod-rewrite

我有一个问题,我确定这里有很多解决方案,但找不到要搜索的内容...

我正在网站上工作,有时我更喜欢在本地版本上工作。 假设:

http://www.normal-website.com
http://127.0.0.1/local-version/

对于每个版本,我有一个不同的规则来重写css/style.csscss/style.css.php(我的htaccess在根文件夹中):

RewriteRule ^css/([a-z0-9-/]+).css$ css/$1.css.php [QSA,L]
RewriteRule ^css/([a-z0-9-/]+).css$ local-version/css/$1.css.php [QSA,L]

我如何编写只有一条规则,所以我可以在线和本地拥有相同的htaccess?还有可能是任何目录(例如,如果我在另一个版本127.0.0.1/website2/上工作)?

非常感谢您的帮助,如果您能为我找到现有的答案,请转发。

2 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteEngine On

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

RewriteRule ^css/([a-z0-9/-]+)\.css$ %{ENV:BASE}css/$1.css.php [NC,L]

答案 1 :(得分:0)

这是另一个带有if-then-else逻辑的smidgen的想法:

RewriteCond %{REQUEST_FILENAME} local-version
RewriteRule ^css/([a-z0-9-/]+).css$ local-version/css/$1.css.php [QSA,L]
RewriteRule ^css/([a-z0-9-/]+).css$ css/$1.css.php [QSA,L]

在两个htaccess文件上试试,如果有任何错误,请告诉我们。

如果您有第二个网站,并且您的本地文件夹是local-web2,请在最后一行之前插入一个条件+规则对:

RewriteCond %{REQUEST_FILENAME} local-version
RewriteRule ^css/([a-z0-9-/]+).css$ local-version/css/$1.css.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} local-web2
RewriteRule ^css/([a-z0-9-/]+).css$ local-web2/css/$1.css.php [QSA,L]
RewriteRule ^css/([a-z0-9-/]+).css$ css/$1.css.php [QSA,L]

记住:一个条件(或多个条件),一个规则。因此,只有在其他条件失败时才执行最后一行。所以保存到最后。