如何在laravel中为下面的第二个选项创建路线....
第一次它会重定向到主页,这对我来说是正确的。
第二我需要得到8048 /
之后的内容所以基本上内容/ 645668 / nice-up-civic-poll.html 是一个参数,我需要单独处理它及其动态链接。
在laravel中路由api:
路由:: get(' /',' HomeController @ index');
www.example.com将加载包含所有故事的主页。
以下链接作为示例应该在www.example.com/之后得到值,基本上它是一个故事/文章链接,所以当它出现时将显示特定的故事。
www.example.com/content/645668/nice-up-civic-poll.html
www.example.com/content/283206/something-here.html
www.example.com/content/234323/good-nice.html
www.example.com/content/451425/breakup-actor.html
www.example.com/content/365412/accident-occured.html
所以基本上在使用apache服务器的域名之后获取所有内容。
.htaccess文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 0 :(得分:1)
如果您想要一个归属路由,然后每个其他URI转到一个Controller方法,您可以制作一个包罗万象的路线:
Route::get('{catch}', 'SomeController@action')->where('catch', '.*');
这将捕获任何与之前定义的路径不匹配的URI。
如果你想要一切都去一个地方:
Route::get('{catch?}', ....)->where(...); // optional param
关于创建捕获所有路径的帖子,使用参数:
上的正则表达式条件进行回答SO - How do I make a Catch-All Route in Laravel 5.2
<强>更新强>
如果您需要捕获的这些URI具有相同的格式,
www.example.com/content/645668/nice-up-civic-poll.html
您可以注册匹配该格式的路线,而不是捕捉所有可能的内容:
Route::get('content/{id}/{slug}', function ($id, $slug) {
...
});
答案 1 :(得分:0)
尝试使用$ request helper ..
private async Task GetDirectoryFilesAsync(IProgress<int> taskProgress)
{
await Task.Run(() =>
{
try
{
var directoryPath = Directory.GetCurrentDirectory() + @"\..\..\..\FUG_2017\";
var _listOfDirectoryFiles = Directory.GetFiles(directoryPath).Take(100);
var fileCount = 0;
foreach (var filePath in _listOfDirectoryFiles)
{
_filesToProcessQueue.Enqueue(filePath);
fileCount++;
taskProgress?.Report(fileCount);
}
}
catch (Exception exc)
{
FlushAndExit(exc);
}
});
}
private void GetDirectoryFiles(IProgress<int> taskProgress)
{
try
{
var directoryPath = Directory.GetCurrentDirectory() + @"\..\..\..\FUG_2017\";
EventAggregator.Instance.Publish(new DisplayMainFormWaitBarWithMessage(ElementVisibility.Visible, $"Inspecting path {directoryPath}"));
var _listOfDirectoryFiles = Directory.GetFiles(directoryPath).Take(1000);
var fileCount = 0;
foreach (var filePath in _listOfDirectoryFiles)
{
_filesToProcessQueue.Enqueue(filePath);
fileCount++;
EventAggregator.Instance.Publish(new DisplayMainFormWaitBarWithMessage(ElementVisibility.Visible, $"Loaded file {fileCount} of {_listOfDirectoryFiles.Count()} to Queue..."));
taskProgress?.Report(fileCount);
}
EventAggregator.Instance.Publish(new DisplayMainFormWaitBarWithMessage(ElementVisibility.Visible, $"Loaded {_listOfDirectoryFiles.Count()} files to Queue..."));
}
catch (Exception exc)
{
FlushAndExit(exc);
}
}
或尝试这个..
$leftbehind = str_replace($request->getHost(),'', $request->fullUrl());
答案 2 :(得分:0)
使用$request->path()
path方法返回请求的路径信息。因此,如果传入请求的目标是
http://example.com/foo/bar
,则路径方法将返回foo/bar
https://laravel.com/docs/5.5/requests#request-path-and-method
答案 3 :(得分:0)
您可以使用Request::path()
获取当前网址。
https://laravel.com/api/5.5/Illuminate/Http/Request.html - 选中Request
的所有可用选项。
例如:如果您只想检查用户是否在某个网址中,请使用此功能 - Request::is('/url') // This will return true or false
答案 4 :(得分:-1)
您可以使用php的内置函数parse_url
来检索内容/ 645668 / nice-up-civic-poll.html。
parse_url($url, PHP_URL_PATH)