在我的网络应用程序中,我想要发布帖子的URL,就像在Stack Overflow中一样。例如:
http://mydomain/posts/214741/this-is-the-postname
然而,当我写一条路线时:
Route::get('post/{postid}/{postname}',array('as' => 'postlink', 'uses' => 'Post@singlePost'));
现在发生的事情如下:
1)将此链接粘贴到地址栏中:
http://mydomain/en/post/214741/postname
2)按回车键,由于获取请求,链接变为:
http://mydomain/en/post/214741/postname?q=post%2F214741%2Fpostname
但是,我想要的是URL保持与粘贴时完全相同,确切地说,当您在浏览器中粘贴Stack Overflow链接并单击Enter时它会如何发生。
我需要它作为get请求,因为用户可以直接使用链接,因此我的控制器需要直接从中获取信息。
用Laravel处理这种情况的最佳方法是什么?
我的.htaccess
文件是:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /public
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
</IfModule>
答案 0 :(得分:2)
您的.htaccess
看起来好像已被更改为将请求的uri作为参数q
的查询字符串变量传递回index.php。
而不是:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?q=$1
尝试将其更改回Laravel附带的原始版本。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
答案 1 :(得分:0)
您好,您可以为postName变量添加模式
{{1}}
您的问题是在生产或Laravel的开发服务器上发生的吗?