我有一个问题,我确定这里有很多解决方案,但找不到要搜索的内容...
我正在网站上工作,有时我更喜欢在本地版本上工作。 假设:
http://www.normal-website.com
http://127.0.0.1/local-version/
对于每个版本,我有一个不同的规则来重写css/style.css
到css/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/上工作)?
非常感谢您的帮助,如果您能为我找到现有的答案,请转发。
答案 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]
记住:一个条件(或多个条件),一个规则。因此,只有在其他条件失败时才执行最后一行。所以保存到最后。