应该何时在URL中使用尾部斜杠?例如 - 我的网址应该/about-us/
是/about-us
什么样的?
我完全了解SEO相关的问题 - 重复的内容和规范的事情; 我正在试图弄清楚在单独正确提供页面的上下文中应该使用哪一个.
例如,我的同事认为末尾的斜杠意味着它是一个"文件夹" - 一个"目录",所以这不是一个正确的风格.但我认为最终没有斜线 - 它也不太正确,因为它几乎看起来像一个文件夹,但它不是,它也不是普通文件,而是没有扩展名的文件名.
有没有正确的方法知道使用哪个?
我有两个变量:
site1 = "www.somesite.com";
site2 = "www.somesite.com/";
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情
function someFunction(site)
{
// If the var has a trailing slash (like site2),
// remove it and return the site without the trailing slash
return no_trailing_slash_url;
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
IIS通过添加尾部斜杠对目录执行URL清理.从IIS 6中查看此旧文档: 当请求没有尾部斜杠的文件夹时,IIS会生成礼貌重定向
在IIS 7.5下使用URL Rewrite 2添加规则时,该规则将不会应用于目录(使用IsDirectory)和文件夹(使用IsFolder).
请参阅此警告添加规则以附加或删除尾部斜杠符号:
这将创建RemoveTrailingSlashRule1:
为什么斜杠在使用新URI(baseUri,relativePath)时有所不同?
此构造函数通过组合baseUri和relativeUri来创建一个Uri实例.
而且,如何将相对路径安全/一致地附加到URI?
var badBase = new Uri("http://amee/noTrailingSlash");
var goodBase = new Uri("http://amee/trailingSlash/");
var f = "relPath";
new Uri(badBase, f) // BAD -> http://amee/relPath
new Uri(goodBase, f) // GOOD -> http://amee/trailingSlash/relPath
Run Code Online (Sandbox Code Playgroud)
即使初始URI没有尾部斜杠,所需的输出也是"好"的情况.
该文件说,你可以设置trailing_slash=False
但你怎么能允许两个端点工作,有或没有结尾的斜线?
当我试试这个
http://localhost/Testlaravel/public/users/login
Run Code Online (Sandbox Code Playgroud)
有用.但是,当我尝试
http://localhost/Testlaravel/public/users/login/
Run Code Online (Sandbox Code Playgroud)
它将我重定向到
http://localhost/users/login/
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
这是我的htaccess文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud) 我有一个类似的URL www.example.com/store/
,它通向商店页面
当用户点击折扣链接时,它会添加参数?discount=foo
,因此我的链接如下所示:www.example.com/store/?discount=foo
.
一切都很实用.但是在这种情况下在查询字符串之前使用正斜杠是不好的做法吗?
使用带有斜杠的 API 时出现问题。
路线
Route::post('user/register','UserController@register');
Run Code Online (Sandbox Code Playgroud)
当我POST
从邮递员/网站调用此路由时,它工作正常,但我从移动设备调用了此路由,并带有如下斜杠。
user/register/
Run Code Online (Sandbox Code Playgroud)
默认情况下,Laravel 删除尾部斜杠,但GET
在我转储请求方法时发出请求。
$method = $_SERVER['REQUEST_METHOD'];
$json = json_encode(['response' => $method], true);
result -> "{response : 'GET'}"
Run Code Online (Sandbox Code Playgroud)
而且我无法获取请求正文。
注意:我尝试了很多解决方案,但找不到任何解决方案,而且我无法从移动端删除或更新路由调用,因此我必须在服务器端处理它。
我试图获得以下效果(使用此本地文件http://localhost/[company_name]/[project_name]/.htaccess
):
http://localhost/[company_name]/[project_name]/page-1 (adds slash)
http://localhost/[company_name]/[project_name]/page-1/ (does nothing)
http://localhost/[company_name]/[project_name]/page-1/subpage-1 (adds slash)
http://www.example.com/page-1 (adds slash)<br />
http://www.example.com/page-1/ (does nothing)
etc.
Run Code Online (Sandbox Code Playgroud)
我想要完成的是这个.htaccess不再需要路径http://localhost/[company_name]/[project_name]/
了,这样我每次上传时都不需要编辑它.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
我在这里找到了上面的代码:向URL添加Trailing Slash,但它只能动态使用HOST并丢弃路径.有人有解决方案来实现这种效果吗?
使用{:trailing_slash => true}可以很容易地在链接中添加尾部斜杠,但这并不能说明用户是否键入了非斜线网址.有没有办法通过路由器中的重定向强制执行尾部斜杠?
get "/:controller/:id" => redirect{|params| "/#{params[:controller]}/#{params[:id]}/" }
Run Code Online (Sandbox Code Playgroud)
以上导致循环循环.
为什么?
"./subclass"的相对链接
/parent/1
Run Code Online (Sandbox Code Playgroud)
与...大不相同
/parent/1/
Run Code Online (Sandbox Code Playgroud) trailing-slash ×10
.htaccess ×3
laravel ×2
mod-rewrite ×2
url ×2
.net ×1
api ×1
c# ×1
django ×1
iis ×1
iis-7.5 ×1
javascript ×1
laravel-8 ×1
php ×1
redirect ×1
seo ×1
slash ×1
string ×1
uri ×1
url-design ×1