私のMacでのみ発生する奇妙な問題があります(別のMacでは試していませんが、Linuxで試してみましたが動作します)
これは私の .htaccess です
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?key=$1
私のindex.phpに次のように置きます:
echo $_GET['url'];
私のURLが次のような場合、空の配列が返されます:
ローカルホスト/テスト/インデックス/xpto
しかし、これをURLに入れると、「index2/xpto」が返されます:
ローカルホスト/テスト/index2/xpto
したがって、問題は文字列インデックスにあります。
私のMacでは動作しないのに、Linuxでは動作する理由を知っていますか?
Mac os x lionで標準のApacheを使用しています。httpd.conf でこの行を変更するだけです
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
....
<Directory "/Library/WebServer/Documents">
AllowOverride All
...
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
編集済み
機能するということは、 $_GET['key'] が空ではないということです。そして、私がブラウザに入れたURLを示しています。
しかし、ブラウザでこのURLを使用すると:
http://127.0.0.1/test/index/xpto
私の $_GET['key'] は空です
そして、このURLを使用する場合:
http://127.0.0.1/test/anythingbutindex/xpto
$_GET['key'] には次のテキストがあります: anythingbutindex/xpto
MacにXAMPPをインストールしましたが、このコードはインデックスで正常に動作します。したがって、問題は私のMACのデフォルトのApacheにあります。
ありがとう。