2016-08-16 8 views
1

動的なPHPリンクを明確なリンクに変換しようとしています。そのために私はRewriteRuleを使用しました。しかし仕事は、私はページが正しくロードされません。この後.htaccessを使用した後、RewriteRuleのページが正しく開かない

RewriteRule ^product/([0-9]+)$ product.php?prodct_id=$1 [NC,L] 

を使用して

dappersole.in/product/46; 

dappersole.in/product.php?product_id=45; 

を変換しようとしています適切に

行われていないことのようです。私はRewriteRuleからproduct/を削除する場合は、ページのロードが完全に

RewriteRule ^([0-9]+)$ product.php?prodct_id=$1 [NC,L] 
dappersole.in/45; 
+0

書き換えルールにスペルミスがあるようです。あなたは最初に '?product_id = 45'を使用していますが、ルールで 'prodct_id = $ 1'を使用しています – RamRaider

+0

いいえproduct_id = 45は私の間違いをプロデュートしていません –

答えて

0

あなたのページのような別のURLを使用することができます。これを変更して、サイトのルートに関連するリソースを参照する必要があります。これに

<link rel="stylesheet" type="text/css" href="css/slider-pro.min.css" media="screen"/> 

:たとえば、これを変更

<link rel="stylesheet" type="text/css" href="/css/slider-pro.min.css" media="screen"/> 

css/slider...前に先頭のスラッシュに注意してください。 すべてあなたのCSS、jQueryおよびイメージリソースでこれを行う必要があります。

<base href="/"> 

または、さらに良い:別の方法として、あなたの<head>ノードに以下を追加することで、時間を節約することができ

<base href="http://dappersole.in/"> 

はまた、私はあなたがあなたのmod_rewriteルールと同じことをお勧めします。

RewriteRule ^product/([0-9]+)$ /product.php?product_id=$1 [NC,L] 

最後に、ファイルの先頭に次の行を追加して、Multiviewsが有効になっていないことを確認してください。

Options -Multiviews 
+0

wow mn respect ...あなたはPHPに関する多くの知識を持っていると思われます....完璧に動作しました。最後に、フュー*キングデイの後に働いていました。たくさんのおじいさんに感謝します。 –

+0

あなたが大歓迎です。 :) –

0

私は、Apache/mod_rewriteのの古いバージョンでも同じ問題を持っていたと私は、正確な問題が何であったかが分かったことはありません。しかし、間違いなく/something/123から/something.php?...への書き換えが嫌いでした。

私が使ったクイックフィックスは、私のPHPファイルの名前を_something.phpに変更し、それを使っていました。あなたのケースではそう

_product.phpのようなproduct始まらない何かにproduct.phpの名前を変更:

RewriteRule ^product/([0-9]+)$ _product.php?product_id=$1 [NC,L] 
          ^strangely enough this solved my problem... 
+0

これはファイル名のフォームを_productに変更する必要があることを意味します。 –

+0

あなたの提案をお寄せいただきありがとうございます。 –

+0

@jeroen - 下記の[私のコメント](/ questions/38974845/after-using-htaccess-rewriterule-page-not-open-properly/38976863#comment65306760_38975811)をご覧ください。 –

0

私もApacheの2.2とこれと同様の問題があった - 名前と書き換え名前は非常に類似している場合それは失敗する。あなたはCSSと現在の場所からの相対JavaScriptのリソースを参照しているので、あなたは少しカンニング、完全にロードされませんhttp://www.example.com/item/46

RewriteRule ^item/([0-9]+)$ product.php?product_id=$1 [NC,L] 
+0

同様の命名の問題は、コンテンツネゴシエーションを使用してあいまいな命名でファイルを扱う 'Multiviews'オプションの使用から生じることがあります、失われたファイル拡張子)。 Multiviewsをオフにすると無効になり、書き換えルールは影響を受けません。 –

+0

'Options + FollowSymlinks-Multiviews'を試すたびに何らかの理由で恐ろしい500のエラーメッセージが表示されます。 – RamRaider

+0

'Options'が大文字と小文字を区別しているのかどうかは分かりませんが、'-FollowSymLinks'には 'cap'をつけてください。 –

関連する問題