2017-08-10 10 views
0

私はいくつかの回答を見たことがありますが、どれも私のために働いていません。難易度.htaccessを使用したURLの書き換え

.htaccessを使用して以下を書き直すにはどうすればよいですか? mod_rewriteがファイル内にあります。

http://example.com/local/vendor/Company 
+0

**自分でコードを書き込もうとします**。あなたが問題を抱えている場合は** [もっと研究している**](https://meta.stackoverflow.com/q/261592/1011527)の後**あなたが試したものを投稿してください** **動作しておらず、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を提供しています。 [質問する](http://stackoverflow.com/help/how-to-ask)の良い質問をお読みください。 [ツアーに参加する](http://stackoverflow.com/tour)と[this](https://meta.stackoverflow.com/q/347937/1011527)を必ず読んでください。 –

+0

ジェイ - 私はプログラミングに慣れていない、私はサイトのライブを得ることができるように答えを得ようとしている。私はあなたのようなコメントを期待していました。提供できるヘルプを評価してください。 – greeves

+0

[参照:mod \ _rewrite、URL書き換え、および "pretty links"について説明している複製](https://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-links-explained) ) –

答えて

0

私は以下の書き換えない...もっと根本的な問題は、ここでおそらく

あります方法:すべき

http://example.com/local/vendor/index.php?handle=Company 

。あなたはその方法ラウンド.htaccessに書き換えません。 を「友人」のURLから実際のURL /ファイルシステムのパスに書き換えます。例については

http://example.com/local/vendor/index.php?handle=Company 

を::

RewriteEngine On 

RewriteRule ^(local/vendor)/(Company)$ /$1/index.php?handle=$2 [L] 

$1$2は後方参照されているアプリケーションが期待している実際のURLに

http://example.com/local/vendor/Company 

:だから、それは他の方法でラウンドですが、あなたはから書き直しますキャプチャされたグループにRewriteRuleパターン

上記は、指定した特定のURLと一致します。つまり、 /local/vendor/Company。私は "会社"がプレースホルダであることを意図していると思われますか?この場合、より一般的にする必要があります。たとえば:

RewriteRule ^(local/vendor)/(\w+)$ /$1/index.php?handle=$2 [L] 

\wは、単語文字のための速記文字クラスです。これにより、ドット(すなわち、.)が除外され、index.phpに書き換えるときに書き換えループが回避されます。


UPDATE:上記つまり、あなたの.htaccessファイルはドキュメントルートに位置している前提としています。 example.com/.htaccess.htaccessファイルは/localサブディレクトリに配置されている場合ただし、(すなわちexample.com/local/.htaccess。) - あなたはコメントで示唆するように見えるよう - あなたはRewriteRuleパターンからlocal/を削除してから、スラッシュの接頭辞を削除するには、上記のディレクティブを調整する必要があります代入。例:

RewriteRule ^(vendor)/(\w+)$ $1/index.php?handle=$2 [L] 
+0

クイック返信ありがとう。私はこれを試して、それはまだ動作しませんでした。たぶん私は "ローカル"が私のドキュメントルートだと言っていたはずです。それは何か変わるのだろうか? ブラウザにhttp:// localhost/local/vendor/Companyと入力すると404が表示されます。 あなたはその会社がプレースホルダです。それはベンダーハンドルに置き換えられるでしょう 取得する404は "要求されたURL/local/vendor/Companyがこのサーバーに見つかりませんでした"です。 – greeves

+0

私が思うような専門用語の問題...「ローカル」があなたの_document root_(本当にあなたの「ドキュメントルート」を意味する)ならば、それはあなたのURLに全く入ってはいけません。 (ドキュメントルートとは、パブリックファイルのルートを定義するファイルシステムのパスです。これはサーバーのconfigの設定ディレクティブです)。 "local"が単にファイルを提供しているサブディレクトリであり、このディレクトリの場所です。 htaccess'ファイルを削除したら、上記のディレクティブから 'local /'を削除してください。 – MrWhite

+0

私は自分の答えを更新しました。 – MrWhite