Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 与pdf目录的htaccess重写规则混淆_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

.htaccess 与pdf目录的htaccess重写规则混淆

.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

我不是htaccess专家。我很少使用它来阻止狡猾的爬行器和基本的CI路由来删除index.php

但基本上,我尝试将所有URL请求的结构如下:

https://www.domain.tld/invoice/[1个或多个整数]/[字母数字] 字符串].pdf

(例如) 到

https://www.domain.tld/invoice/fetch/[1个或多个整数]/[字母数字] 字符串].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]