我在使用 Htaccess 和 RewriteRule 时遇到一些问题。 基本上: 我有一个名为/_dev/WEBDEV 的目录,并希望人们从服务器上的/WEBDEV 访问它。 ( http://domain.com/WEBDEV 将指向 http://domain.com/_dev/WEBDEV )
这是我使用过的htaccess代码
RewriteRule ^WEBDEV(|/)$ /_dev/WEBDEV/
RewriteRule ^example(|/)$ /_dev/example/
所以当我去http://domain.com/WEBDEV时,页面显示,但没有 CSS 样式或图像。 我的意思是:
<img src="img/shape3.png">
服务器上的 url 为/_dev/WEBDEV/img/shape3.png 但使用 Htaccess 它给出了
http://domain.com/img/shape3.png
作为图像(并抛出 404)。
另外,我的服务器上有一个文件/_dev/WEBDEV/app1.php ,并且使用 htaccess 时会出现 404 未找到。
最佳答案
首先,正确定义你的 RewriteBase
RewriteEngine On
RewriteBase /
如果请求的 URL 与文件或目录匹配,则不应触发您的重写规则。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
您需要将规则的 REGEXP 匹配添加到重写的路径中 但首先,重写 WEBDEV 目录的路径,使其后面始终有一个斜杠
RewriteRule ^WEBDEV$ WEBDEV/ [L,QSA]
RewriteRule ^WEBDEV(.*)$ /_dev/WEBDEV$1 [L,QSA]
RewriteRule ^example(.*)$ /_dev/example$1 [L,QSA]
这很像创建别名,但可以在 .htaccess
对于 css 和 html 等外部资源,您只需将其路径更改为
<img src="/img/shape3.png">
例如。这样,绝对路径是根据域名(或基本路径)计算出来的,结果是 yourdomain.ext/img/shape3.png
应该可以工作。
关于php - 目录重定向规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041748/