2017-05-08 1 views
0

にリダイレクトします。HTアクセスは、私がリダイレクトしたい単一のファイル

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?url=$1 

私はこれを使用している場合、それはhttps://example.com/fooのようなURLのために動作しますが、ないhttps://example.com/foo/barについて(コンテンツ/ Styles.cssをなどのすべての相対URLは、今404エラーを与えるのfoo /コンテンツ/ Styles.cssを、あります)。私は

[R=301] 

を追加すると

リダイレクトが正しく行われているが、それは '醜い' URLを示しています。 両方の方法がありますか?

+0

あなたの時間を無駄にしてしまいました。私はhttp://stackoverflow.com/questions/3899991/htaccess-rewrite-breaks-relative-pathsでアプローチを使用すると思います – sprunk

答えて

0

次の.htaccessのコードを使用します。それは何

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/index.php 
RewriteRule . index.php [L] 

をされて、index.phpにすべてのパスとパラメータをリダイレクトします。

すなわち ドメインがある場合はexample.com

のでhttp://example.com/test - リクエストがindex.phpファイルにしても撮影されます>要求が依然へ連れて行かれるhttp://example.com/test/another/test

場合は、パスindex.phpファイル

これはlaravelのようなフレームワークで使用されているのとまったく同じコードです。

使用できるindex.phpファイルでは:

$request_uri=parse_url($_SERVER['REQUEST_URI']); 
$path = $request_uri['path']; 

$path変数はあなたに、ユーザが入力したパスを提供します。

関連する問題