2012-02-29 12 views
1

私の使命はhtaccessファイルは

http://localhost/projectname/index.php?m=media&cmd=video

とも

http://localhost/projectname/home

から

http://localhost/projectname/media/video

を達成することですファイル以下

事は、JavaScriptとCSSなどの任意の外部ファイルが戦場に取られないだろうということです

RewriteRule ^([^/]*)$ /projectname/index.php?m=$1 
RewriteRule ^([^/]*)/([^/]*)$ /projectname/index.php?m=$1&cmd=$2 

私の使命を達成するのに役立ちます。

は、私は私の代わりに、これは私がCMDせずにそれをしたいと思いhttp://localhost/projectname/media/cmd/video

を可能にhtaccessの

RewriteRule ^([^/]*)/cmd/([^/]*)$ /projectname/index.php?m=$1&cmd=$2 

で置くことです知っています。助言がありますか?

答えて

2

の変更をあなたのルールを使用相対的なもの。つまり、パスはhttp://または/で始まる必要があります。

+0

あなたのおかげで、私が欲しかったことが間違いなく解決されました。だから、より多くのパラメータがあるときは、私は条件と新しいルールを書き直す必要がありますか? – lilsizzo

+0

はい、正しいです。すべてのRewriteRuleが 'L'フラグで終わっていることを確認してください。 – anubhava

1

なぜすべてをindex.phpに渡してから、パスを処理/解析してください。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)/([^/]*)/?$ projectname/index.php?m=$1&cmd=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)/?$ projectname/index.php?m=$1 [L,QSA] 

をそして、あなたのJS、CSS、画像ファイルが絶対パスではなく使用していることを確認してください。

RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

次にこれに

$_SERVER['PATH_INFO'] 
$_SERVER['ORIG_PATH_INFO'] 
$_SERVER['QUERY_STRING'] 

http://php.net/manual/en/reserved.variables.server.php