2011-06-30 7 views
5

これが長すぎる場合は事前にお詫びします。別名でルールを書き換えるにはどうすればよいですか?

私は自分のラップトップでローカルデベロッパーにWAMPを使用していて、それぞれがプロジェクト作業ディレクトリを指しているさまざまなc:/wamp/alias/*ファイルを持っています。私はいくつかの優れたmod_rewriteの助けを持っていたし、SEOに優しいと短いの両方であるURLのlocalhost/.../index.php/sub/dirlocalhost/.../ih/sub/dirを変更するために動作するように

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA] 

を得ています。 [私はこれを行うにはまだ行っていないが、うまくいくと思う。]しかし、すべて一緒にするためには、私は本当にむしろやっていないだろう c:/wamp/www/から c:/に私のドキュメントルートを変更しなければならなかった私のApacheがハッキングされたり、そうでなければそれが厄介であるからです。

私のテストエイリアスファイルには、次のようになります

Alias /testme "c:/var/tmp/wamp-testme/" 
<Directory "c:/var/tmp/wamp-testme/"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
    Order Deny,Allow 
    Deny from all 
    Allow from 127.0.0.1 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA] 
</Directory> 

http://localhost/testme/rewrites/ih/sub/pathをロードしようとしたときに私が手にエラーがブラウザで一致

Not Found 
The requested URL /var/tmp/wamp-testme/rewrites/index.php/sub/path 
    was not found on this server. 

[Thu Jun 30 06:46:13 2011] [error] [client 127.0.0.1] 
    File does not exist: C:/wamp/www/var 

です。確かに、私のc:/wamp/alias/flying.confファイルの同じ設定がc:/data/flying/ディレクトリを指していると、エラーログファイルにFile does not exist: C:/wamp/www/dataがスローされます。

Sooooo ...私のマシンのルートディレクトリにdocルートを持たずにエイリアスを超越する書き換えルールをどうやって作ることができますか?

答えて

7

奇数:書き換えルールにPTフラグを追加してみてください。これにより、書き換えられたURLが強制的にURLマッピングエンジンに返されます。

EDIT:ディレクトリにRewriteBaseを設定してみてください。

+0

提案していただきありがとうございます。私の書き換えルールを 'RewriteRule ^(。* \ /)?ih(\ /.*)?$ $ 1index.php $ 2 [L、QSA、PT]'として書き直しても、私には同じエラーが表示されます:-( –

+0

HmmあなたはRewriteBaseを追加しようとすることができます:正直なところ、Aliasディレクティブとのやりとりの仕方はわかりませんが、404エラーは、書き換えられたURLがあなたのApacheルートに相対的であると仮定している可能性があります。 – Femi

+0

私は 'httpd.conf'ファイルにルールを書き込もうとしましたが、' RewriteBase '/ ''または 'RewriteBase/testme /' 'をエイリアスファイルは動作しませんでしたので、すべてのエイリアスファイルにルールが付いています。次に、これを '.htaccess'ファイルを介して取得する必要があるかどうかは分かりません。私のプロダクションサーバ上で 'httpd.conf'を使うと、あるいは...エイリアスを持っていないので、このような複雑さはまったくありません:-) [私は仮想ホストを持っています。より多くの実験的...]もう一度ありがとう! –

関連する問題