【问题标题】:RedirectRule for Directory目录的重定向规则
【发布时间】:2014-01-29 06:35:23
【问题描述】:

我在使用 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 未找到。

【问题讨论】:

    标签: php css apache .htaccess mod-rewrite


    【解决方案1】:

    首先,正确定义你的 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 应该可以工作。

    【讨论】:

    • 我应该使用什么?我基本上不想说,如果他们在浏览器中输入 WEBDEV 或 WEBDEV/,则 url 会更改为 /_dev/WEBDEV/ 我应该使用 Base Href 还是?
    • 我可能只是将所有 css、图像和 js 文件放在根目录的 /assets/ 中。但问题仍然是它仍然会为 app1.php 抛出 404
    • 好吧,所以编辑后的代码确实有效,但它适用于带有斜杠的 URL,没有它,它会被重定向到实际的 url。
    • 先添加 RewriteRule ^WEBDEV$ WEBDEV/ [L,QSA]
    • 嗯,我认为这是一个不同的问题。您可能想用 WEBDEV 文件夹前缀重写路径,从而不暴露真实的图像路径...
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 2015-08-04
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多