2009-06-04 26 views
0

私はApacheを使って挑戦しています。私の.htaccessファイルでHtaccess URL書き換え質問

私はこのような要求を変換したい:

URL /ポートフォリオ/ファイル名.htm

へ:?

URL、ファイル名

任意の受験者を?あなたの時間に感謝します

+0

もう少し具体的にしてください。あなたの例では「URL」は何を意味していますか?そして、「ポートフォリオ」は固定ですか? – Gumbo

答えて

0

私はそれをテストしていませんが、このような何かがうまくいくはずです。

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/URL 
RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [PT,L] 


</IfModule> 
<IfModule !mod_rewrite.c> 
    ErrorDocument 404 index.php 
</IfModule> 
+0

アレック、素早く対応いただきありがとうございます。私はそれを試して、それは動作していないように見えるので、私は正規表現のテスターを使用して何が起こっているかもしれない参照してください...これとデリミタの衝突の可能性はありますか? Thx D –

1

あなたは、訪問者(および検索エンジン)にURLをどのように表示させるかによって、いくつかの選択肢があります。

外部から見えるURLをurl/portfolio/filename.htmのままにする場合は、2つのRewriteCond行を削除した後、Alecのソリューションが機能しました。

RewriteEngine On 

RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [PT,L] 

他のパラメータは、クエリ文字列にすることができ、あなたはそれらを保持したい、ルールの最後に括弧内のオプションにQSAを追加した場合。

あなたは外の人々が、代わりにurl?filenameを参照してくださいにルールを変更する場合:適用され、他のクエリパラメータについて

RewriteRule ^(.*)/portfolio/(.*)\.htm$ $1?$2 [L,R] 

同じ資格。

これでも問題が解決しない場合は、書き換えログを有効にして、そのログでさらなるヒントを探してください。ここに掲示すれば誰かが助けになるでしょう。この部分はhttpd.confに入れなければならないかもしれません。私のApacheは.htaccessでそれを気に入らなかった。

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^portfolio/(.+)\.htm$ index.php?$1 [NC,L] 

をしたり、目に見えて、それを変更したい場合:

RewriteLog ...path... 
RewriteLogLevel 3 # you'll regret anything higher 
0

これは動作するはず

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^portfolio/(.+)\.htm$ /?$1 [R,NC,L] 

は、第1には、へexample.com/?filenameようになります。最初のユーザーはexample.com/portfolio/filename.htmのようになります。

希望に役立ちます。