2016-12-26 5 views
0

実際に私はこの問題を持っている:の.htaccessのRewriteRule(PHP)

内部ページ用に来るのURLは私が実際に欲しい
http://example.co.in/page.php?id=2

のようであることのようです
http://example.co.in/AboutUs

のみ.htaccessファイルを使用して、それは可能ですか?私の.htaccessファイルのコードは、単に以下の通りであるが、それは私がで多くのことを試みたが、成功していない取得この
http://example.co.in/page/2

Options -MultiViews 
RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/page\.php\?id=([0-9]+)\s [NC] 
RewriteRule^/page/%1? [R=301,L] 

RewriteRule ^page/([0-9]+)$ /page.php?id=$1 [L] 

のような出力を提供します!

+0

含まれるように単純な配列にURLのパス部分を見て、その後、ちょうどindex.php' 'にすべての非ファイル要求を書き換え、ページごとにルールを使用しないでくださいIDごとのページ。ルーティングと呼ばれています。 – Walf

+0

Hii @Walf!実際には私はそれでルーティングを使用することはできませんし、私は2ページだけこれを行う必要がありますので、操作することが可能です/ .htaccessでURLを書き直す? – Roshan

+0

PHPを5行追加することはできませんか?新しいファイルでさえない? – Walf

答えて

0

各ページにルールが必要です。ここ1、あなたの例に基づいて始めるためです:

/弊社について

Options -MultiViews 
RewriteEngine On 

RewriteRule ^AboutUs$ page.php?id=2 [QSA] 

これはid=2を追加し、使用することができる任意のクエリ文字列を保持します。これは内部書き直しですので、AboutUsを訪問すると実際にはpage.php?id=2となります。各ページに1つずつRewriteRuleを追加します。要求通りに.htaccessファイルに移動します。

/page.php?id=2

あなたも働いてからpage.php?id=2を停止し、それがAboutUsにリダイレクトする必要があり、各ページの2つのディレクティブのこのセットを追加したい場合。

RewriteCond %{QUERY_STRING} (^|&)id=2(&|$) [NC] 
RewriteRule ^page\.php$ AboutUs? [R=301,L] 

これは、提供余分なクエリ文字列パラメータをリダイレクトしますが、全体クエリ文字列が削除され、(AboutUs?)に渡されていません。

ノート

明らかにあなたが(ID番号と弊社について部分)のルールを作成しますが、彼らはそれぞれのためにあるとおりに他の部分を残して、各ページに関連する部分を変更。

+0

Hii @ user2493235 --i最初の半分のコードを試しましたが、 'http://example.co.in/page.php?id = 2'のようなURLを取得しています – Roshan

+0

最初の半分は'/AboutUs'だけを動作させます。 '/page.php?id = 2'から'/AboutUs'にリダイレクトするには後半が必要です。 – SuperDuperApps

0

Hiii、すべて!皆さんのご支援とご提案ありがとうございます。
以下は、まさに私が欲しいもののために働くコードです。必要なら誰でも助けてくれることを願っています。

# Tell PHP that the mod_rewrite module is ENABLED. 
SetEnv HTTP_MOD_REWRITE On 
RewriteEngine on 
RewriteBase/

#FOR INTERNAL PAGES(rewrite "/page.php?name=about us" to "AboutUs") 

RewriteCond %{QUERY_STRING} ^name=([^&\s]+)$ 
RewriteRule ^(?:page\.php|)$ /%1? [R=301,L] 

RewriteCond %{QUERY_STRING} ^name=([^&\s]+)&name=([^&\s]+)$ 
RewriteRule ^(?:page\.php|)$ /%1/%2? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\s\/]+)/?$ page.php?name=$1&r [L,QSA]