4

サーバーのpublic_htmlフォルダーに1つの.htaccessファイルがあり、プライマリドメインをサブフォルダーに保持できます。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mrmikeanderson.com$
RewriteCond %{REQUEST_URI} !^/mrmikeanderson/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mrmikeanderson/$1
RewriteCond %{HTTP_HOST} ^(www.)?mrmikeanderson.com$
RewriteRule ^(/)?$ mrmikeanderson/index.php [L]        

そのサブフォルダーには、/ index.php?page=aboutのようなURLを/aboutに変換するためにさらに書き直された別の.htaccessがあります。

RewriteEngine On
RewriteRule ^$ index.php?page=home
RewriteRule portfolio index.php?page=portfolio
RewriteRule resume index.php?page=resume
RewriteRule about index.php?page=about
RewriteRule contact index.php?page=contact

最後の4ページは機能しますが、ドメイン名(\ ^ $)だけの書き直しが壊れています。すべてが私のローカルMAMPサーバーで機能しますが、最初の.htaccessファイルがそこに存在しないため、2つが競合していると思います。何が問題になっているのかを知ることができるWeb開発者はいますか?

4

3 に答える 3

0

いつでも書き換えログを設定して、http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelogで何が起こっているかを確認できます。

于 2012-08-28T20:24:43.783 に答える
0

/mrmikeanderson/2番目のhtaccessファイルがあるフォルダがあると仮定します。が適用されない理由は、リクエストをに RewriteRule ^$ index.php?page=homeリダイレクトしているためです。したがって、次のいずれかのルールを変更します。/mrmikeanderson/index.php

RewriteRule ^(/)?$ mrmikeanderson/index.php [L]        

RewriteRule ^(/)?$ mrmikeanderson/index.php?page=home [L]        

または、他のhtaccessファイルでこのルールを変更します。

RewriteRule ^$ index.php?page=home

RewriteRule ^(index.php)$ index.php?page=home

または、ファイルを変更して、変数がデフォルトでindex.phpあると想定することもできます。pagehome

于 2012-08-28T20:24:46.013 に答える
0

コメントアウトしてみてください:

RewriteRule ^(.*)$ /mrmikeanderson/$1

正規表現は、空白文字列を含むすべてのものと一致するように見え^(.*)$ますが、これは競合しますRewriteRule ^$ index.php?page=home

編集:([A-Za-z0-9]+)の代わりに使用してみて^(.*)$ください。

RewriteRule ^([A-Za-z0-9]+)$ /mrmikeanderson/$1

于 2012-08-28T20:22:23.173 に答える