2011-08-03 15 views
0

私は[「PATH_INFO」] $ _SERVERに似た何かを取得しようとしていますが、変なサーバーの問題は、それを使用してから私を妨げている...私のアプリケーションでhtaccessのディレクトリ、ファイル、および変数

は、リンクは次のように見ることができます.htaccessファイルで

www.domain.com/folder/file/variable 
www.domain.com/folder/file 
www.domain.com/file/variable or 
www.domain.com/file/ 

、私は適切なページを取得しようとしていますし、index.phpのまたは類似にリダイレクトしません。

これまでのところ、私は:)

RewriteRule ^(.+)$ /$1.php # page only 
RewriteRule ^(.+)/(.+)$ /$1.php?x=$2 # page + variable 
RewriteRule ^(.+)/(.+)$ /$1/$2.php # folder/page 
RewriteRule ^(.+)/(.+)/(.+)$ /$1/$2.php?x=$3 # folder/page + variable 

作業されていない、これを持っている私は、要求が、ファイル名、またはディレクトリであるかどうかをチェックするには、-fするRewriteCond%{REQUEST_FILENAME}を使用する必要があると確信しています。 ..しかし、私は

変数は、すべての変な文字を含めることができます...それを動作させることができなかった - 私は、ドットと一致しています理由です...たぶん私は以来(のみAZでファイル/フォルダ名と一致するようにしてください私は彼らがaz、_または - 以外の何かを含むとは思わない)。

そのは:)

+1

1) '^(。+)$'は '/ file /'と '/ file/variable'と'/folder/file /変数。 2) '^(。+)$'の代わりに '([^ /] +)'を使用してください - これは#1に役立ちます – LazyOne

答えて

0

おかげで、私はこの問題を解決することができました。

のhtaccessファイルは現在、次のようになります。

RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$ /$1/$2.php?x=$3 
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)/$ /$1/$2.php 
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$ /$1.php?x=$2 
RewriteRule ^([-a-zA-Z0-9_]+)/$ /$1.php 

変数がない必要がありますが、すべてのフォルダやファイルのパスが「/」で終わる必要があります。これは私の枠組みの中での問題ではない - しかし、他人のために有用ではないかもしれません。

1
は書き換えが最初に最も具体的なルールリバース

今苦しみのほぼ二日となっているので、任意の助けを大幅に高く評価されます。

RewriteEngine On 
RewriteRule ^(.+)/(.+)/(.+)$ /$1/$2.php?x=$3 [L] 

# RewriteRule to check that the file is exists here 
RewriteCond %{REQUEST_URI} ^(.+)/(.+)$ 
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}.php -f 
RewriteRule ^(.+)/(.+)$ /$1/$2.php [L] 

# If file is not exists, then check by put to the variable 
RewriteRule ^(.+)/(.+)$ /$1.php?x=$2 [L] 
RewriteRule ^(.+)$ /$1.php [L] 
+0

はい、はい、申し訳ありませんが、詳細は表示されません。 、等...私のhtaccessの構成は基本的に動作しますが、一度に一つのケースのために。私が1行を除いてすべてをコメントし、対応するURLをヒットすると、それは動作します。 – dvdbrk

0

ほとんどの人/フレームワークは、拡張子が指定されていないものすべてを、単一のPHPフロントコントローラーに渡します。私はほとんどの人がこのルートを行く理由の一つが原因のmod_rewriteがあるだけでどのように複雑なのだと思います! @ LazyOneのヒントに

関連する問題