0

他のブラウザでは機能しているがFirefoxでは機能していないリライトに問題があります

問題は、URLで引用符を使用する必要があることです。クライアントの不正なソフトウェアがスクリプトにデータを送信しているため、代替手段がありません。

引用符を%27を使用してURLにエンコードします(phpにセキュリティを追加しました)。

# example.eu/horses/r/rollin-%27n-tumblin/
RewriteRule ^horses/(.*)/(.*)/$ index.php?page=viewHorse&letter=$1&horseName=$2 [L]

これはSafariとChromeで動作しています(MacとWindows 7でテスト済み)が、Firefoxは「ページが正しくリダイレ​​クトされていません」と表示します

psキャッシュの問題ではありません

私は書き直しの初心者なので、解決策が簡単であることを望んでいますが、このルールが他のブラウザで機能したが、Firefoxでは機能しなかった理由を理解できませんでした

ここに.htaccessがあります

RewriteEngine on 
RewriteBase /
ErrorDocument 404 /404/
#Commented these out just to see if causing issues
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#RewriteRule ^index.html http://www.example.eu/ [R=301,L]
#RewriteRule ^home.html http://www.example.eu/ [R=301,L]
#RewriteRule ^Home.html http://www.example.eu/ [R=301,L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_URI} !index.php
#RewriteCond %{REQUEST_URI} !^message-board/$
#RewriteCond %{REQUEST_URI} !(.*)/$
#RewriteRule ^(.*)$ http://www.example.eu/$1/ [L,R=301]
RewriteRule ^css/(.*)/$ /style.css
RewriteRule ^checkout/failed/$ index.php?page=checkoutFailed [L]
RewriteRule ^checkout/complete/$ index.php?page=checkoutComplete [L]
RewriteRule ^advertise/$ index.php?page=advertise [L]
RewriteRule ^contact/$ index.php?page=contact [L]
RewriteRule ^sales/$ index.php?page=sales [L]
RewriteRule ^news/$ index.php?page=news [L]
RewriteRule ^publications/$ index.php?page=publications [L]
RewriteRule ^generateSitemap/$ index.php?page=generateSitemap [L]
RewriteRule ^fixtures/(.*)/$ index.php?page=view-fixtures&country=$1 [L]
RewriteRule ^fixtures/$ index.php?page=fixtures [L]
RewriteRule ^results/(.*)/(.*)/(.*)/$ index.php?page=view-result&country=$1&date=$2&UniRef=$3 [L]
RewriteRule ^results/(.*)/(.*)/$ index.php?page=cresults&country=$1&date=$2 [L]
RewriteRule ^results/(.*)/$ index.php?page=results&country=$1 [L]
RewriteRule ^results/$ index.php?page=results [L]
RewriteRule ^horses/(.*)/(.*)/$ index.php?page=viewHorse&letter=$1&horseName=$2 [L]
RewriteRule ^horses/(.*)/$ index.php?page=horsesByLetter&letter=$1 [L]
RewriteRule ^horses/$ index.php?page=horsesByLetter [L]
RewriteRule ^search.php index.php?page=search&%{QUERY_STRING} [L]
RewriteRule ^404/$ index.php?page=404 [L]
<FilesMatch "\\.(js|css|html|htm|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2992000"
</FilesMatch>
<FilesMatch "\.(js|css|pdf|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>

問題は、Mac OSX10.8.2のFF16.0.1で、「ページが正しくリダイレ​​クトされていません」というエラーが表示されることです。

4

1 に答える 1

0

phpに正規の301スクリプトがあり、URLエンコードに問題があったことがわかりました。

Firefoxは$_SERVER['REQUEST_URI']内のURLを他のブラウザとは異なる方法でエンコードしていると思いますが、...

変化する...

$_SERVER['REQUEST_URI']

php正規スクリプトで...

urldecode($_SERVER['REQUEST_URI'])

URLの'と正しく一致するようにしました。:)

于 2012-11-02T14:37:45.240 に答える