我遇到一个奇怪的问题,当我尝试点击网址时
www.mywebsite.com/walkthrough?hostid=12345
它会自动附加' /'前''在网址中。 像
www.mywebsite.com/walkthrough/?hostid=12345
因此我无法获得参数hostid。
路由
Route::get('/walkthrough', ['uses' => 'WalkthroughController@index']);
htaccess的
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
Options -Indexes
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
#php_value allow_url_fopen 0
#php_value allow_url_include 0
</IfModule>
为什么会这样?任何帮助都非常感谢。谢谢。
答案 0 :(得分:0)
这很可能是.htaccess问题。虽然我很惊讶你仍然无法取出url参数,因为如果/
存在,它应该没什么区别。
典型的laravel htaccess文件应如下所示:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
修改强>
根据评论中的讨论,似乎public
目录中名为walkthrough
的冲突目录导致了问题。
如果没有匹配的目录(正确的话),Laravel将仅删除尾随/
。
虽然尾随/
没有任何害处。
答案 1 :(得分:0)