2017-11-11 7 views
0

でのmod_rewriteを使用して、私は、次のURL持っている:私が達成したい何PHP - Apacheの

http://example.com/pages/page.php?company_name=Name

は、このようなURL持っていることです。

http://example.com/pages/Name

を私は別の試してみましたルールは動作しません。

RewriteRule ^pages/([A-Za-z0-9-]+)/?$ /pages/page.php?company_name=$1 [NC] or 

RewriteRule ^pages/([^/]*)\.php$ /pages/page.php?company_name=$1 [L] 

動作しません。それは私に "見つからない"ページを与えます。 mod_rewriteを正しく使用するにはどうすればいいですか?

答えて

0

これを試してみてください:

RewriteRule ^pages/([0-9a-zA-Z\-_]*)(/|)$ /pages/page.php?company_name=$1 [QSA,L] 

これは、URLの末尾にスラッシュがあれば気に気にしたりしません。

http://example.com/pages/Name 
http://example.com/pages/Name/ 

をし、また余分なagrs(QSA)が含まれますページを呼び出した場合

http://example.com/pages/Name/?more=stuff 

あなたのapacheにmod_rewriteがあり、あなたが示した場所にphpが存在する場合は、これでうまくいくはずです。

あなたが 'bluepages' は、例えば、異なるPHPを必要とする別のURLをお持ちの場合はUPDATE

は:

http://example.com/bluepages/Name 

次に、これはそのために働くでしょう:

RewriteRule ^bluepages/([0-9a-zA-Z\-_]*)(/|)$ /bluepages/somescript.php?some_var=$1 [QSA,L] 

あなたの場合複数のRewriteRulesをそれぞれのために作成することができます。しかし、あなたはそれをワイルドカードにしたい場合は、これは盲目のキャッチオールを行う(およびApacheのログにエラーレポートの多くを引き起こす)になります。

RewriteRule ^([0-9a-zA-Z]*)/([0-9a-zA-Z\-_]*)(/|)$ /$1/page.php?some_var=$2 [QSA,L] 

あなたが特定する必要があり、あるいは単にすべてを変更しますか。人がそれに行くことができる方法はたくさんあり、それは本当にあなたの意図にかかっています。

+0

私は上記のオプションを試しましたが、まだ動作しません、まだ私に "Not Found"を与えます 要求されたURL /bluepages/Name.phpはこのサーバー上に見つかりませんでした。 ?私はroot/pagesフォルダに私の.htaccessファイルと残りのphpファイルがあるので、ありがとう –

+0

あなたが提供した例以外で何かしているなら、私の答えはうまくいかないでしょう。今青写真とルート/ページに言及してください...これらすべてのものが再生され、元の質問に追加されているはずです – IncredibleHat

+0

更新をお寄せいただきありがとうございます。 /シナリオとそれが与える結果を参照してください。もう一度ありがとう! –