0

他の Web サイトの名前がパラメーターとして指定される Web アプリを開発しています。Apache Web サーバーで .htaccess ファイルを使用して URL を書き換えています。これは、.htaccess ファイルに記述したコードです。

RewriteEngine On
RewriteRule ^([a-z0-9\_\-]+(\.)[a-z0-9\_\.\-]+)[^(site.php)] site.php?url=$1
RewriteRule ^([a-z0-9\_\-]+(\.)[a-z0-9\_\.\-]+)[^(site.php)]/ site.php?url=$1

これを書い[^(site.php)]たのは、site.php が私の正規表現に一致したため、パラメータとして site.php を渡していたからです。これは正しい方法で動作していますが、唯一の問題は、たとえば次のように書いているときに、パラメーターの最後の文字が省略されることです。

www.mywebsite.com/google.com

google.co最後のを取り、省略しmます。を渡している場合はgoogle.co.in、 を取りgoogle.co.i、省略しnます。この理由は何ですか?

4

1 に答える 1

1

を使用しているため[^(site.php)](そして、それはあなたの考えを意味するものではありません)、URL の最後の文字と一致します。RewriteCond を使用する必要があります。試すことができます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9\_\-]+(\.)[a-z0-9\_\.\-]+)/?$ site.php?url=$1

つまり、既存のファイルまたはディレクトリを書き換えないでください

于 2012-04-13T07:13:16.437 に答える