2017-11-04 16 views
2

によって生成されたURL、私は次のURLを持っているをきれいにする.htaccessファイルを使用しないページとアイテムがファイルであります(すなわち:item.phpとpage.php)、私は次のコードを使用して、拡張子.phpを削除することができた:は、どのように私はPHP

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)/?$ $1.php [NC,L] 

どれでも少しの助けがappreciatされるだろうed。

+0

アプリケーションで公開しているURLを既に「消去しましたか? – MrWhite

+0

https://stackoverflow.com/questions/6940644/url-rewriting-including-titleの可能な複製とhttps://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-リンクを説明した – mario

+0

いいえ、私はそれを掃除していない、私はそうするために助けが必要です、任意の助けてください? –

答えて

0

私は内部的にこのような何かにhttp://www.example.com/item?title=titlename&id=5http://www.example.com/page?title=titlenameのようなものからURLを書き換えしたい:http://www.example.com/item/titlename/5またはhttp://www.example.com/page/titlename。他の方法でラウンドする必要があります

... は内部http://www.example.com/item/titlename/5からhttp://www.example.com/item?title=titlename&id=5を書き換えます。おそらく、ターゲットURLに.php拡張子を含める必要がありますか? (ファイルの拡張子を追加行うために別の指令に依存しないでください。)

のようなものを試してみてください。

Options -MultiViews 

RewriteEngine On 

RewriteRule ^([a-z]+)/([\w-]+)(?:/(\d+))?$ /$1.php?title=$2&id=$3 [L] 

これは、とし、末尾のIDなしの両方のURLを処理します(。例えば/5) 。しかし、/item/titlenameという形式のURL(数値IDなし)を指定すると、空のid URLパラメータがスクリプトに渡されます。 MultiViewsは、そうでない場合はmod_negotiationはmod_rewriteの前に、(例えば)itemからitem.phpにURLを書き換えますし、あなたが渡されたURLパラメータを取得することはありません、仕事にこれを無効にする必要があることを

注意。

具体的にターゲットファイル、書き換え前にpage.phpが存在する場合は、これを確認する追加の条件を含めることができます。しかし、私はこれが必要であるとは考えていませんでした。なぜなら、404と関係なく、ファイルが存在するかどうかを確認するのは比較的高価なためです。

Options -MultiViews 

RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([a-z]+)/([\w-]+)(?:/(\d+))?$ /$1.php?title=$2&id=$3 [L] 

これは、ファイルがサイトのドキュメントルートに存在することを前提としています。

コメントに記載されているように、あなたのアプリケーションではすでにhttp://www.example.com/item/titlename/5という形式のURLにリンクしているはずです。

+0

それは大変な努力でしたが、私にとってはうまくいかなかったのです。 –