0

我有一个在共享主机空间上运行的网上商店(xtCommerce)。

根目录(安装、启动并运行 shop 1 的位置)包含 shop 软件提供的 .htaccess 文件

DirectoryIndex index.php

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php

我现在安装了第二个网上商店(也是 xtcommerce),在同一个网站空间中,在 /shop2 包含相同的 .htaccess 文件

www.shop1.net -> /
www.shop2.net -> /shop2

-尝试访问 shop2 结果 403
-当我从 /shop2 中的 .htaccess 中删除 RewriteEngine 时,首页显示得很好,但链接似乎已损坏。

我对 mod_rewrite 不太了解,我尝试将 RewriteBase /shop2 添加到第二个 .htaccess 文件中,但失败了。

先感谢您!

编辑:即使我RewriteRule .* http://google.de在根目录中使用,并删除 /shop2 中的 .htaccess,我也会不断收到“禁止”。也许问题不在于重写?

EDIT2:当前状态:
.htaccess in /

DirectoryIndex index.php

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/

RewriteCond %{HTTP_HOST} !shop2\.net$ [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php

/shop2 中的 .htaccess(4 个不同的示例)

RewriteRule .* index.php # frontpage shop2.net works, any URLs to be rewritten result in 404
RewriteRule .* shop2/index.php # frontpage shop2.net works, any URLs to be rewritten result in 404
RewriteRule .* http://google.de # frontpage shop2.net works, any URLs to be rewritten result in 404
#RewriteRule .* index.php # shop2.net => forbidden
4

1 回答 1

0

您在那里的虚拟主机设置相当奇怪。问题是根目录中的 htaccess 在 /shop2 中的 htaccess 之前执行。根 htaccess 重写根目录下的 index.php 文件。但是因为 shop2.net 的 document_root 是 /shop2,所以 index.php 文件在 document_root 之外,所以 apache 禁止这样做(应该如此)。要解决此问题,请将其放在根 htaccess 中。

RewriteEngine on
RewriteCond %{HTTP_HOST} !shop2.net$
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php

但最好只为 shop2 创建一个单独的文件夹,而不是 shop1 的子文件夹

于 2012-12-30T21:35:41.247 回答