URL重写不在另一个htdocs文件夹中工作

时间:2015-02-18 21:05:00

标签: apache .htaccess mod-rewrite url-rewriting

首先,我只想将另一个文件夹用作默认的htdocs目录。 为此,我将这些行添加到httpd.conf

AliasMatch ^/php/(.+)$ F:/PHP/$1
<Directory "F:/PHP/*">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

我遇到的问题是我为前htdocs设置的网址重写功能无法正常工作。为了进行重写,我在RewriteRule文件中使用了.htaccess指令:

RewriteRule ^((?:(user|admin|debug)/)?[a-z_/]+)/(?:([0-9]+)/)?$ index.php?page=$1&auth=$2&id=$3

...位于&#34; F:/ PHP / lif-web-interface /&#34;在我的驱动器上。

我想要显示的网址如下:

http://127.0.0.1/php/lif-web-interface/factionlist/

如果它已正确执行,我会看到一个重写的URL,其末尾有收集的GET参数。当我尝试添加[R]参数时,我的输出变为以下内容:

http://127.0.0.1/F:/PHP/lif-web-interface/index.php?page=factionlist&auth=&id=

......令人惊讶的是,这是我想看的东西。但是,我并不想重定向到该页面,我只是想替换这个网址。

你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我假设您已将这些规则放在F:/PHP文件夹中的htaccess文件中。如果是这样,那么尝试添加基数:

RewriteBase /php/
RewriteRule ^((?:(user|admin|debug)/)?[a-z_/]+)/(?:([0-9]+)/)?$ index.php?page=$1&auth=$2&id=$3

如果规则在文档根目录中,则需要包含路径:

RewriteRule ^php/((?:(user|admin|debug)/)?[a-z_/]+)/(?:([0-9]+)/)?$ /php/index.php?page=$1&auth=$2&id=$3