【问题标题】:URL is appending forward slash '/' before query stringURL 在查询字符串之前附加正斜杠“/”
【发布时间】:2017-05-22 01:30:17
【问题描述】:

当我尝试像

这样点击 url 时,我遇到了一个奇怪的问题
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>

为什么会这样?非常感谢任何帮助..谢谢。

【问题讨论】:

  • 你能显示你的代码和路线吗?
  • 添加路线..请检查问题。
  • 如果你用Route::get('/walkthrough/{step}', ['uses' =&gt; 'WalkthroughController@index2'])添加另一条路线,你可以得到hostid public function index2($hostid) {}
  • 这很奇怪。尝试按照我在下面的答案中提到的定义路线。
  • 项目的要求是url应该按照我上面问题www.mywebsite.com/walkthrough?hostid=12345中显示的方式使用

标签: php laravel url laravel-5 routes


【解决方案1】:

这很可能是 .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>

编辑

根据 cmets 中的讨论,似乎是 public 目录中名为 walkthrough 的冲突目录导致了问题。

如果没有匹配的目录,Laravel 只会剪掉尾随的 /(这是正确的)。

虽然有尾随 / 并没有什么坏处。

【讨论】:

  • 我检查了它,它不起作用。 :( 问题是它在 url 中不接受 /walkthrough。仅在 walkthrough 关键字之后添加 /?。
  • 问题在于该特定关键字:(
  • 您的 htaccess 工作正常吗?这很可能与 laravel 无关
  • 是的,它的工作原理。仅在 url 中出现 /walkthrough 问题。
  • 你能用 a) 你的 .htaccess 和 b) 一个有效的路由示例来更新你的问题吗
【解决方案2】:

尝试像 laravel 文档中提到的那样定义路由。

Route::get('walkthrough', 'WalkthroughController@index'); 

参考basic routing

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多