【问题标题】:mod_rewrite to a directorymod_rewrite 到一个目录
【发布时间】:2010-01-17 00:37:09
【问题描述】:

我正在尝试为不同的目录创建一个重写规则,但不幸的是它不起作用。

除非查询字符串中的第一个单词是 admin,否则我当前的重写会将所有内容发送回 index.php 文件。 'admin' 的重写规则是 admin.php,但我实际上希望它转到 /var/www/html/website.com/admin/admin.php(而不是同一目录中的文件)。

这是当前的 .htaccess 文件。

RewriteEngine On
RewriteRule ^(.*\/?).*(css|images|js/)+.*$ - [L]
RewriteRule ^\/?admin\/?(.*)$ admin.php?url=$1 [QSA,L]

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

如果我将管理员的重写规则更改为使用不同的目录..

RewriteRule ^\/?admin\/?(.*)$ /var/www/html/website.com/admin/admin.php?url=$1 [QSA,L]

它破坏了网站。有什么想法吗?

谢谢。

【问题讨论】:

    标签: apache mod-rewrite url-rewriting


    【解决方案1】:

    其实很简单,你使用的是系统路径,而需要web路径。

    试试下面这行:

    RewriteRule ^\/?admin\/?(.*)$ /subfolder/admin.php?url=$1 [QSA,L]
    

    【讨论】:

    • 我的目录位于网络路径下方。 Web 路径是 /var/www/html/website.com/web/ 并且我试图访问的路径是 /var/www/html/website.com/admin/web/
    • 好吧,你不能。这样做的唯一方法是创建另一个文件,该文件可通过 Web 访问,并包含您不可访问的文件。像这样 [website.com/web/admin.php]:
    • 感谢您的帮助。我刚刚创建了一个指向该目录的符号链接并在其中添加了一个 mod_rewrite 并且有效。
    【解决方案2】:

    试试这些规则:

    RewriteRule ^admin($|/(.*)) admin/admin.php?url=$2 [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php?url=$0 [QSA,L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      相关资源
      最近更新 更多