2016-08-11 3 views
2

このURLを置き換えるために、この.htaccessコードをルートフォルダに持っています。localhost/mysite/profile.php?username="someone"localhost/mysite/someoneになります。PHPは2つのmod_rewriteルールのURLを組み合わせていますか?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /mysite/profile.php?username=$1 

これは正常に動作しますが、私が欲しいのはlocalhost/mysite/aboutの代わりlocalhost/mysite/about.phpするについてページたとえばなどのサブページを含めることです。また、サブページもルートフォルダにあります。

どのようにこれらの2つの書き換えを行うことができますか?

+0

は '個人用サイト/'ディレクトリにあるこの.htaccessのですか? – anubhava

+0

はい、localhost/mysiteにあります。 index.phpとabout.phpがどこにあるか。 – Randy

+0

FWIW ... "このURLを' localhost/mysite/profile.php?username = "someone" 'と置き換えて' localhost/mysite/someone'にする - 多くの人がこの_reverse-like_ description(?)をよく使うようですしかし、あなたのコードは実際にはまったく逆です.... '/ mysite/someone'は' /mysite/profile.php?username = someone'に書き直されます。 (?!) – MrWhite

答えて

2

を試してみてくださいあなたはmysite/.htaccessにこのコードを持つことができます。

RewriteEngine On 
RewriteBase /mysite/ 

# add .php internally to files 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

# handles profile URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+)/?$ profile.php?username=$1 [L,QSA] 
+1

すごい早いサー!どうもありがとうございます! :D – Randy

0

以下のコードを試してみてください。うまく動作しています。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+1

これはサブページでは動作しますが、他のものは置き換えられましたが、現在** localhost/mysite/user123 **が** localhost/mysite/profile.phpから動作していませんか?username = username123 ** – Randy

+0

これは(注文に関係なく)既存の指令と矛盾します。ユーザープロファイルのように見えるURL(物理ファイルと直接一致しないURL)を除外するには、_condition_を含める必要があります。 – MrWhite

0

この

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^mysite/([A-Za-z0-9-]+)$ /mysite/profile.php?username=$1 
+0

申し訳ありません、両方とも現在動作していません。 @anubhavaはすでに私の質問に答えました。みんなありがとう! :) – Randy

関連する問題