我目前正在尝试在 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>