2017-10-27 14 views
1

私はきれいなリンクになるまで、うまく動作している簡単なブログを書こうとしています。htaccessとpretty links

私は何を探していますがmysite.com/blog/this_postのような使用のURLですので、index.htmlをURLパラメータとしてindex.htmlファイルにそれを渡す?ブログ= this_post

はどこにでも探してhtaccessコードの束を見つけましたが、ほとんどが動作しませんでした。私は仕事をしようとする一つの解決策を見つけましたが、何らかの理由でそれを正しく実行していません。私はこれを使用するとき、私は、URLに/blog/index.html?blog=index.html得る代わりのに/ブログ/ this_postと移植のことを保つ

Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^blog/(.*) /blog/index.html?blog=$1 

(ととオプション+ FollowSymLinksを部分なし)期待どおりのindex.html。サーバー上の何かが間違って設定される可能性がありますか?ブログの他のものはすべて魅力的なように働いていますが、スクリプトには間違いがないので、機能するためのかなりのリンクが得られます。

htaccessコードでワードプレスとコピアしている古いサイトを見ても同じことがあります。ここや他のサイト上の他のすべての検索は上記の同じソリューションまたはwordpressを指しますが、何らかの理由でindex.htmlをスクリプトに渡して、最後のURLセグメント "this_post"を期待通りに渡していません。何が起こるはずです

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.html [L] 
</IfModule> 
# END WordPress 

は、アドレスバーに正しいまま

mysite.com/blog/this_post 

におけるユーザーの種類ですか? htaccessファイルはthis_postを引っ張り、それを引数としてindex.htmlスクリプトに渡します。これは上記の例がすべきことです。それは

mysite.com/blog/index.html?blog=index.html 

にアドレスバーを変更している理由私は...この前に得たので

サイドノートでは、はい私は.PHPの拡張子を使用しての承知している理由はよく分からないが、.htmlのですクライアントは、彼らがつぶれていないと尋ねる。

編集 - 可能な複製のリンクはすでに見つかりましたが、現在のRewriteRuleを取得しようとしましたが、まだ動作していません。

+2

[参照:mod \ _rewrite、URLの書き換え、および「pretty links」の説明の可能な複製](https://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-links -explained) – Croises

+0

ありがとうございました、それは私が現在のhtaccess行につながっていることを発見したリンクの1つでした。何らかの理由で動作していないので、 –

答えて

0

[NC、L]フラグのコンボは私にクラッシュエラーを与え続けているので、私はちょうど[NC]を残しました。 rootアカウントのディレクトリに置くこともできないようですので、私はwebディレクトリ(public_html)に移動しました。 Lフラグは私のページのサーバーのクラッシュを与えるか、動作しないルートでそれを有するが、public_htmlのフォルダにそれを移動する理由は、おそらくサーバーの構成の問題、それをあるない理由

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^blog/(.*) /blog/index.html?blog=$1 [NC] 

まだわかりませんそれは私が見落としている?

0

最善の方法は、このような単純な作られたものにある:

に等しいものを

mysite.com/this_post

mysite.com/index.php?blog=this_post

Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^([^/]*)\.html$ index.php?blog=$1 [L] 

Options -MultiViews 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

、あなたは次のようにURLを行うことができます

このように、両方を行うことができますコールが正常に動作します。

まず、SEO URLをどのように見せたいかを決める必要があります。次に、.htaccess正規表現とルールを設定する必要があります。

注:GET呼び出しに.htmlを使用することはできません。作品には.phpのファイルを使用し、$_GET['blog']を使用してURLからデータを取得することができます。

+0

GETが.htmlファイルで動作する理由は分かりません。かなりのリンクのものを除いて動作します。私はこの解決策を試して、あなたがこのRewriteRule ^([^ \。] +)$ $ 1.htm [NC、L]をRewriteRule ^([^ \。] +)$ $ 1.htmlに変更した場合、このソリューションを試して、404エラー –

+0

@VikingNMを得ました。 [NC、L]それは動作しますか?私は "html"の "l"を見逃したと思う。 –

+0

はまだ404エラーを受けています:( –