2017-09-10 8 views
1

こんにちは私はURLを作るために特定のルールを使用しているウェブサイトを持っています。コードは次のとおりです。拡張子を削除して末尾の末尾にスラッシュをつけないようにしてください

Options +FollowSymLinks  
Options -Multiviews  
RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,L] 

RewriteRule ^([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)/([0-9]+)/([a-zA-Z0-9_-\s]+)$ /page1.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA] 
RewriteRule ^([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)$ /page2.php?var1=$1&var2=$2&var3=$3 [L] 
RewriteRule ^([a-zA-Z0-9_-\s]+)/([a-zA-Z0-9_-\s]+)$ /page2.php?var1=$1&var2=$2 [L,QSA] 
RewriteRule ^([a-zA-Z0-9_-\s]+)$ /page2.php?var1=$1 [L,QSA] 

# remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s] 
RewriteRule ^(.+?)/$ /$1 [R=301,L] 

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

ErrorDocument 404 /404.php 

場合によっては正常ですが、場合によってはエラーが表示されます。

エラー私は取得しています:

1)それは拡張子を削除せずにPAGE3の内容を示して、私はwww.example.com/page3.phpのために行くとき、私はpage3.phpを持っていると仮定しますURLからwww.example.com/page3と入力すると、変数としてpage3が使用され、ページ2の単一変数で書き換えルールが記述されているため、ページ2の内容が表示されます。私はwww.example.com/var1/としての私のURLを記述する場合

2)それは、www.example.com/var1/.phpとしてURLを書き換えるが、私はとしてそれを書く場合はwww.example.com/var1/var2/これはうまく動いています。すなわち、トラッリングスラッシュを削除しています。

私のURLにwww.example.com/page3PAGE3は私のルートディレクトリにその中にファイルであれば、私はPHPと第二なしに私の.PHPページをリダイレクトしたい最初のエラー1で述べたようにpage3の内容を表示し、page3が私のルートディレクトリにあるファイルでない場合は、page3を変数として取るべきであり、上記の書き換えルールとして動作するはずです

エラー2私は1つの変数か2または3または4の変数を持っているかどうかURLから末尾のスラッシュを削除したいと思います。

NOTE ... ...事前に感謝を私を助けてください。私はHTTP上のHTTPSないで私のウェブサイトを実行しています。

答えて

1
  1. 書き換え前にリダイレクトするルールがあります。
  2. .htaccessに.php拡張子を追加する前に、対応する.phpファイルが存在することを確認してください。

はこのようにそれを持っている:完全にブラウザのキャッシュをクリアした後

ErrorDocument 404 /404.php 
Options +FollowSymLinks -Multiviews 
RewriteEngine on 

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule^- [F,L] 

# remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ /$1 [NE,R=301,L] 

# skip all files and directories from rules below 
RewriteCond %{SCRIPT_FILENAME} -d [OR] 
RewriteCond %{SCRIPT_FILENAME} -f 
RewriteRule^- [L] 

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

RewriteRule ^([\w-]+)/([\w-]+)/([0-9]+)/([\w-]+)$ page1.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA] 

RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)$ page2.php?var1=$1&var2=$2&var3=$3 [L,QSA] 

RewriteRule ^([\w-]+)/([\w-]+)$ page2.php?var1=$1&var2=$2 [L,QSA] 

RewriteRule ^([\w-]+)$ page2.php?var1=$1 [L,QSA] 

テストを。

+1

ありがとうございました...その仕事は絶対にうまくいきます.... – Ashish

関連する問題