2017-12-29 63 views
0

私は現在、.htaccess(以下に含まれています)があります。ユーザーはcontent.phpページに移動し、データベースに格納されているページを表示します。しかし、私にはハードコードが必要なページがあり、.php拡張子でリストされています。拡張機能を削除してクエリ文字列をディレクトリとして送信する書き換えルールを追加する方法はありますか?.htaccess拡張子とクエリ文字列を削除してフォルダ構造にしますが、ページが存在しない場合は別のページに送信してください。

電流:へhttp://www.example.com/dashboard.php?ax=clients&do=save&miscthirdparam=doitnow

http://www.example.com/dashboard/clients/save/doitnow/

dashboard.phpページが存在しない場合は、その後、ちょうどcontent.phpに送信表示するデータベースのページがあるかどうかをチェックするようになっていますか? (データベースにページがない場合はエラー404が表示されます)。

**私の現在の.htaccess **

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([a-zA-Z]*)/(.*)$ /content.php?url=$1/$2 [L] 
    Options +FollowSymLinks 
    RewriteEngine on 
</IfModule> 
<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /content.php?err=404 
</IfModule> 

答えて

0

あなたはRewriteCond backreferenceを使用することができます。最初のURLパスを抽出し、phpファイルが存在するかどうか調べることができます。あなたの例では、dashboardを抽出し、%{DOCUMENT_ROOT}/dashboard.phpファイルが存在するかどうかを確認します。その場合は、指定したパラメタでURLを書き換えてください。正規表現[^/]*は、スラッシュ(/)を除くすべての文字と一致します。

RewriteCond %{REQUEST_URI} ^/([^/]*) 
RewriteCond %{DOCUMENT_ROOT}/%1.php -f 
RewriteRule ^([^/]*)(/([^/]*))?(/([^/]*))?(/([^/]*))? /$1.php?ax=$3&do=$5&miscthirdparam=$7 [L] 
+0

ファイルが存在しない場合は、content.phpに戻ってきますか?私は別の場所に配置しようとしましたが、どこでも動作していないようです。 :) –

+0

あなたは最初の 'RewriteCond'の直前に貼り付けることができます – Ben

+0

しかし、私がwww.example.com/dashboard/を訪問しようとするとwww.example.com/dashboard.phpに行くべきです。 /content.phpに移動し、ページがデータベースにないため404を表示します。 –

関連する問題