.htaccess 与pdf目录的htaccess重写规则混淆
我不是htaccess专家。我很少使用它来阻止狡猾的爬行器和基本的CI路由来删除index.php 但基本上,我尝试将所有URL请求的结构如下: https://www.domain.tld/invoice/[1个或多个整数]/[字母数字] 字符串].pdf (例如) 到 https://www.domain.tld/invoice/fetch/[1个或多个整数]/[字母数字] 字符串].pdf (例如) 到目前为止,我已经-.htaccess 与pdf目录的htaccess重写规则混淆,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我不是htaccess专家。我很少使用它来阻止狡猾的爬行器和基本的CI路由来删除index.php 但基本上,我尝试将所有URL请求的结构如下: https://www.domain.tld/invoice/[1个或多个整数]/[字母数字] 字符串].pdf (例如) 到 https://www.domain.tld/invoice/fetch/[1个或多个整数]/[字母数字] 字符串].pdf (例如) 到目前为止,我已经- RewriteRule ^invoice/(.+)/(.+\.pdf
RewriteRule ^invoice/(.+)/(.+\.pdf)$ index.php?/invoice/fetch/$1 [L]
但它工作不正常(毫不奇怪),并破坏了对
有人能帮忙正确地构造这个重写规则吗?我意识到使用CI路由可以很容易地做到这一点,但我需要在htaccess中完成这一点,因此这一规则至关重要。重写斜杠/项目时没有简单的解决方案。不过,您有一个简单的解决方法: 使用具有绝对路径的所有资源文件:
<link href="/css/pdf.min.css" rel="stylesheet" type="text/css">
贪婪的正则表达式(+)可能会导致一些问题。我解决了问题-下面另一个冲突的重写规则导致了问题。我进一步研究了正则表达式,并提出了如下条件:
RewriteCond %{REQUEST_FILENAME} invoice/[0-9]+/[a-z0-9]+.pdf$
RewriteRule ^(.*)$ index.php?/invoice/fetch/$1 [L]
这似乎很有效!不过,我欢迎对此提出建议/改进/意见。但他们已经在使用绝对路径。我总是这样做的兼容性。不过,他们还是被重写的内容给弄糊涂了。我只是希望重写规则不针对我提出的结构以外的任何东西。你使用WordPress吗?不,CodeIgniter(无论如何,在这个项目上)。为什么这么问?index.php?/invoice/fetch/$1不是常见的URL结构。啊,如果我把你弄糊涂了,很抱歉。CodeIgniter使用Index.php作为。。我不记得技术术语了,但是所有请求的“入口点”和99%的人在htaccess中使用mod rewrite来重写所有URL,这样就不需要直接在URI中使用它们(而且不美观/令人困惑)。
RewriteEngine On
RewriteRule ^invoice/([^/]+)/(.+\.pdf)$ /index.php?/invoice/fetch/$1/$2 [L]
RewriteCond %{REQUEST_FILENAME} invoice/[0-9]+/[a-z0-9]+.pdf$
RewriteRule ^(.*)$ index.php?/invoice/fetch/$1 [L]