現在、PHP でルーティング スクリプトを作成しようとしています。ここでは、htaccess を使用して URL データを PHP ページに送信しています。
私の問題は、すべての文字を許可していることです。これは、すべての URL に不明な数の先頭のスラッシュを含めることができることを意味します。
私のHtaccessは:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L]
</IfModule>
つまり、この URL:
http://www.domain.com/sometext
次と同じ $_GET['url'] が返されます:
http://www.domain.com////////sometext
私のhtaccessの要件は、実際には文字列でスラッシュを使用できることですが、前ではありません:)
私が間違っていることを誰かが知っていますか?:)
アップデート
ルート フォルダーには、次の htaccess があります。
DirectoryIndex index.html index.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
/public フォルダーには、次の htaccess があります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+([^\?\ ]*)
RewriteRule ^ /%1 [R=301,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L]
</IfModule>