1

当有人在我的商店中打开一个不存在的网站时,我想更改我的 shopware .htaccess 文件以重定向到特定的 URL。

这是我的 .htaccess

    <IfModule mod_rewrite.c>
RewriteEngine on
#RewriteBase /shopware/

RewriteRule shopware.dll shopware.php
RewriteRule files/documents/.* engine [NC,L]
RewriteRule backend/media/(.*) media/$1 [NC,L]

RewriteCond %{REQUEST_URI} !(\/(engine|files|templates)\/)
RewriteCond %{REQUEST_URI} !(\/media\/(archive|banner|image|music|pdf|unknown|video)\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ shopware.php [PT,L,QSA]
</IfModule>

# Staging-Rules start
#SetEnvIf Host "staging.test.shopware.in" ENV=staging

DirectoryIndex index.html
DirectoryIndex index.php
DirectoryIndex shopware.php

# Disables download of configuration
<Files ~ "\.(tpl|yml|ini)$">
Deny from all
</Files>

# Enable gzip compression
<IfModule mod_deflate.c>
# disable compression on iconset due to loading problems in google chrome on windows
SetEnvIfNoCase Request_URI icon-set.css$ no-gzip dont-vary

AddOutputFilterByType DEFLATE text/html text/xml text/plain text/css text/javascript application/json
</IfModule>

<IfModule mod_expires.c>
<Files ~ "\.(jpe?g|png|gif|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
FileETag None
<IfModule mod_headers.c>
Header append Cache-Control "public"
Header unset ETag
</IfModule>
</Files>
</IfModule>

# Disables auto directory index
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>

<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

<IfModule mod_php5.c>
# php_value memory_limit 128M
# php_value max_execution_time 120
# php_value upload_max_filesize 20M
php_flag phar.readonly off
php_flag magic_quotes_gpc off
php_flag session.auto_start off
php_flag suhosin.session.cryptua off
php_flag zend.ze1_compatibility_mode off
</IfModule>

# AddType x-mapp-php5 .php
# AddHandler x-mapp-php5 .php

我在谷歌上搜索了很多并尝试了一些东西,但对我来说没有任何效果。

4

2 回答 2

0

我可能会ErrorDocument在这里使用(前提是当您说“不存在的商店”时所描述的状态会导致 HTTP 状态为 404。例如:

ErrorDocument 404 /path/to/errorPage.php

在apache 的文档中有更多关于此的信息。

如果您想要基于条件的重定向(在这种情况下,例如商店不存在),那么您还可以尝试使用header()文档在此处)在 php 中进行重定向 - 特别是控制哪个页面的部分以用户为例。

请记住,header()一旦开始向浏览器输出,您就不能使用,因为它会尝试发送原始 HTTP 标头,如果您的脚本已经向浏览器回显了某些内容,则无法完成。

于 2015-06-09T15:55:38.530 回答
0

要实现您的问题所描述的所需行为,您必须安装一个 Shopware 插件,让您指定一个登录页面,该页面将在找不到页面时显示(商店内发生 HTTP 404 错误)。

幸运的是,您可以使用一些插件。您可以在 Shopware 社区商店中找到它们,搜索术语“404”: http ://store.shopware.com/search?sSearch=404

不幸的是,通过向 .htaccess 文件添加规则无法实现所需的行为。

由于 Shopware URL 是虚拟的,默认 .htaccess 文件(您已发布)中的重写规则将所有请求定向到 Shopware:

RewriteRule ^(.*)$ shopware.php [PT,L,QSA]

之后,Shopware 必须确定 URL 是否正确并找到该页面。如果找不到所需的 URL,Shopware 会发送正确的 404 状态代码,但会显示起始页。

由于只有 Shopware 可以确定,如果在其系统中找到该 URL,此时 .htaccess 中的 Apache 重写规则将不再起作用。在 PHP 应用程序(在本例中为 Shopware)处理了请求之后,此时 Apache 不能使用 ErrorDocument。

于 2015-08-26T20:55:37.250 回答