Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache URL重写不会';如果通过别名目录访问网站,则无法工作_Apache_Mod Rewrite_Wampserver - Fatal编程技术网

Apache URL重写不会';如果通过别名目录访问网站,则无法工作

Apache URL重写不会';如果通过别名目录访问网站,则无法工作,apache,mod-rewrite,wampserver,Apache,Mod Rewrite,Wampserver,我在本地计算机上的目录d:\www\mysite中有一个网站。我安装了WAMPServer,并为我的站点设置了别名目录mysite 例如,http://localhost/mysite/static-resource.html正确检索位于d:\www\mysite\static resource.html中的我的文件 我的问题是我的.htaccess文件中的URL重写: RewriteEngine On RewriteRule ^articles/(\d+) ./article.php?

我在本地计算机上的目录
d:\www\mysite
中有一个网站。我安装了WAMPServer,并为我的站点设置了别名目录
mysite

例如,
http://localhost/mysite/static-resource.html
正确检索位于
d:\www\mysite\static resource.html
中的我的文件

我的问题是我的
.htaccess
文件中的URL重写:

RewriteEngine On    
RewriteRule ^articles/(\d+) ./article.php?id=$1
Alias /mysite/ "d:/www/mysite/" 

<Directory "d:/www/mysite/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>
当我尝试访问
http://localhost/mysite/articles/1
,我得到了以下回应:

找不到 在此网站上找不到请求的URL/www/mysite/article.php 服务器

我可以确认在
d:\www\mysite\article.php
上存在
article.php
文件

过去,我将我的站点的根(
d:\www\mysite
)设置为Apache服务器的
DocumentRoot
(而不是默认的
c:\wamp\www
),在这种情况下,我的URL重写起作用了,因此我当前的问题必须与我的站点“落后”这一事实有关别名目录


my
mysite.conf
文件的内容:

RewriteEngine On    
RewriteRule ^articles/(\d+) ./article.php?id=$1
Alias /mysite/ "d:/www/mysite/" 

<Directory "d:/www/mysite/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>
Alias/mysite/“d:/www/mysite/”
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融

我在您的重写规则中没有看到重写库。
.htaccess
中,添加规则

RewriteBase必须有
/mysite/
,因为您的
别名/mysite/“d:/www/mysite/”

如果只是
http://localhost/mysite
被访问时,它应该返回一个在此服务器上找不到的
。 如果不希望发生这种情况,请添加另一个别名以及上面的内容,如下所示:

Alias /mysite "d:/www/mysite/" 

仅此而已:

AliasMatch /mysite(/.*)? d:/www/mysite/$1 
为什么是一个基地?发件人:

RewriteBase指令显式设置每个目录重写的基本URL。正如您将在下面看到的,RewriteRule可以在每个目录配置文件(.htaccess)中使用。在这种情况下,它将在本地执行操作,在处理之前剥离本地目录前缀,并仅对其余部分应用重写规则。处理完成后,前缀将自动添加回路径。默认设置为;重写基本物理目录路径

当替换新URL时,此模块必须将URL重新注入服务器处理。要做到这一点,它需要知道相应的URL前缀或URL基是什么。默认情况下,此前缀是相应的文件路径本身。然而,对于大多数网站来说,URL与物理文件名路径没有直接关系,所以这种假设通常是错误的!因此,可以使用RewriteBase指令指定正确的URL前缀

示例来自:


您能否确认已为新的别名目录正确设置了
AllowOverride
?@clmarquart我不确定正确设置了哪些内容。我已经用相关信息更新了我的问题…
RewriteBase
,我明白了。感谢
:)
是否可以省略
重写库
,或将其设置到
.htaccess
所在的目录?我在相同的场景中也遇到同样的问题,但添加
重写库/我的别名
对我不起作用。有什么想法吗?