.htaccess 重写联机和本地子文件夹上的工作规则
我有一个问题,我相信这里有很多解决方案,但找不到要搜索的内容 我在一个网站上工作,有时我更喜欢在本地版本上工作。 假设:.htaccess 重写联机和本地子文件夹上的工作规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有一个问题,我相信这里有很多解决方案,但找不到要搜索的内容 我在一个网站上工作,有时我更喜欢在本地版本上工作。 假设: http://www.normal-website.com http://127.0.0.1/local-version/ 对于每个版本,我都有一个不同的规则来重写css/style.css到css/style.css.php(我的htaccess在根文件夹中): 我怎么能写只有一条规则,这样我就可以在线和本地拥有相同的htaccess?也可以使用任何目录(例如,如果我使用
http://www.normal-website.com
http://127.0.0.1/local-version/
对于每个版本,我都有一个不同的规则来重写css/style.css
到css/style.css.php
(我的htaccess在根文件夹中):
我怎么能写只有一条规则,这样我就可以在线和本地拥有相同的htaccess?也可以使用任何目录(例如,如果我使用另一个版本127.0.0.1/website2/的话)
非常感谢您的帮助,如果您能为我找到现有答案,请抱歉重新发布。您可以使用:
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]
下面是另一个带有少量
if-then-else
逻辑的想法:
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文件上都尝试一下,如果有任何bug,请告诉我们
如果您有第二个网站,并且您的本地文件夹是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]
记住:一个条件(或多个条件),一条规则。因此,最后一行仅在其他条件失败时执行。所以,把它留到最后。+1,这是一个让我学习的神奇的mod重写!我喜欢在“重写条件”中,您如何引用规则的组捕获,这些捕获将在规则的后面部分捕获。它真的很富有,还不了解它。:)老实说,我真的不明白它是怎么工作的。。。但是它工作得很好!非常感谢您的帮助,当您移动一个网站或使用基于相同.htaccess的多个网站时,它会非常有用。非常感谢:)谢谢@zx81,非常欢迎您。这是使用反向引用捕获当前
RewriteBase
值的正则表达式技巧。
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]