1

ショップウェアの .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

質問で説明されている目的の動作を実現するには、ページが見つからない場合に表示されるランディング ページを指定できる 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 ステータス コードを送信しますが、開始ページを表示します。

URL がそのシステム内で見つかった場合、Shopware だけが判断できるため、この時点で .htaccess の Apache 書き換えルールは機能しなくなります。PHP アプリケーション (この場合は Shopware) が要求を処理した後のこの時点では、Apache は ErrorDocument を使用できません。

于 2015-08-26T20:55:37.250 に答える
0

私はおそらくErrorDocumentここで使用します (「存在しないショップ」と言うときに説明している状態が 404 の HTTP ステータスになるという条件で)。たとえば:

ErrorDocument 404 /path/to/errorPage.php

これについては、 Apache のドキュメントにさらに詳しい情報があります。

条件に基づいてリダイレクトが必要な場合 (この場合、ショップが存在しない場合など)、header()(ドキュメントはこちら) を使用して php 内でリダイレクトすることを試すこともできます。具体的には、ページを管理する部分たとえば、ユーザーが取られます。

ブラウザへの出力が開始されると、生の HTTP ヘッダーを送信しようとするため、使用header()できないことに注意してください。これは、スクリプトが既に何かをブラウザにエコーしている場合は実行できません。

于 2015-06-09T15:55:38.530 に答える