2017-01-04 8 views
0

MultiViewsを有効にすると、不正なURLを訪れた場合でも、私のページ(index.php)にはまだ404エラーが表示されます。私は.htaccessにルールを作成せずにこの問題を解決する方法を見つけようとしています。MultiViewsは不正なURLにも耐性があります

例えば、「www.mydomain.com/ インデックス /何とか/何とか」、訪問index.phpの、私はそれが原因余分な末尾のゴミURLコンポーネントに失敗します。 "/ blah/awuihda/hiu"が存在しないため、連絡/blah/awuihda/hiu "の内容もcontact.phpの404エラーが表示されます。

MultiViewsを無効にするとうまく動作しますが、URLを省略することはできません(たとえば、「contact.php」を表示するために「/ contact」と入力できません)。

あなただけ.php拡張子が通常のアプローチである、必要とされていないので、次のように使用することができ

答えて

0

:また、私はそれが.htaccessにルールを追加しています知っているが、それはすべてのために働く1人のオフだと

RewriteEngine on 
# Remove .php if it's present with a 301 redirect 
RewriteRule ^(.+)\.php$ $1 [R=301,L] 
# If a request doesn't exist as a directory, file or symlink 
# and it does exist with .php appended, rewrite to that 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+)$ $1.php [L] 

潜在的な重複コンテンツに当たっていないことを意味し、同じものが.phpの有無にかかわらず提供されることを意味します(または実際には例のように後に続くものすべて)。それが役に立つと願っています。

メインサーバーの設定に入る可能性がありますが、変更する必要があります。

+0

私はこれが私のサーバー構成にそれを追加して変更する必要があるだろうか? – Furentes

+0

私のサーバー構成では、これは私の**/news **サイトを**/games/csgo/news **にリダイレクトするので、404を返します。 – Furentes

+0

.htaccessの代わりにサーバー設定で動作するように更新しました – SuperDuperApps

0

私のために働く解決策が見つかりました。

Options -Indexes SymLinksIfOwnerMatch -MultiViews 

RewriteEngine On 

RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

出典:link

関連する問題