Regex 使用.htaccess重写不会';行不通

Regex 使用.htaccess重写不会';行不通,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我试图通过在.htaccess中使用重写规则来使URL看起来更好,但它不起作用 事实就是这样。我有一个根文件夹,其中有一个名为pdf.PHP的PHP文件。该文件中的脚本向用户发送一个PDF文件,该文件的名称在URL中作为变量给出。PDF文件位于名为PDF的文件夹中,位于根目录中。该文件夹受到保护,因此只能使用脚本获取PDF文件。所有这些都是出于安全考虑 例如,您可以在转到时下载PDF文件,其中PDF/File.PDF是PDF文件的路径。那很好。我希望它能在您只需转到时工作,因此URL必须重写为前

我试图通过在.htaccess中使用重写规则来使URL看起来更好,但它不起作用

事实就是这样。我有一个根文件夹,其中有一个名为pdf.PHP的PHP文件。该文件中的脚本向用户发送一个PDF文件,该文件的名称在URL中作为变量给出。PDF文件位于名为PDF的文件夹中,位于根目录中。该文件夹受到保护,因此只能使用脚本获取PDF文件。所有这些都是出于安全考虑

例如,您可以在转到时下载PDF文件,其中PDF/File.PDF是PDF文件的路径。那很好。我希望它能在您只需转到时工作,因此URL必须重写为前面提到的URL

我试着用生成器创建一个重写规则,但它不起作用。 以下规则位于pdf文件夹的.htaccess文件中。把它放在根目录中也不起作用

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^pdf/([^/]*)$ /pdf.php?file=pdf/$1
文件夹pdf的保护如下所示

ErrorDocument 403 http://example.com/
Order deny,allow
Deny from all

在root.htaccess中尝试以下代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# to convert spaces to hyphens
RewriteRule "^(pdf)/(\S*) +(.*)$" /$1/$2-$3 [L,NE,R=302]

RewriteRule ^(pdf/.+)$ /pdf.php?file=$1 [L,QSA,B,NC]

在root.htaccess中尝试以下代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# to convert spaces to hyphens
RewriteRule "^(pdf)/(\S*) +(.*)$" /$1/$2-$3 [L,NE,R=302]

RewriteRule ^(pdf/.+)$ /pdf.php?file=$1 [L,QSA,B,NC]


附加一组您要查找的源和目标URL。到目前为止,你给出了什么规则?我用.htaccess-file.attache中的行更改了我的帖子,附上一组你想要的源和目标URL。到目前为止,你给出了什么规则?我用.htaccess-file.attache中的行更改了我的帖子,附上一组你想要的源和目标URL。到目前为止你给出了什么规则?我用.htaccess文件中的行更改了我的帖子。我按照你说的做了,但它不起作用。我仍然得到403错误,因为PDF文件在一个受保护的文件夹中,这意味着重定向不起作用。还有什么我可以试试的吗?防护线现在在第一个柱子上。当我删除它们时,您的重写规则似乎有效,但仅适用于文件名中只有一个单词的PDF文件。如果名称包含两个或多个单词,并用空格分隔,则此选项无效。提前谢谢!不幸的是,它仍然是一样的。我尝试了一个类似的URL,其中文件名有两个单词。我得到的错误是404,当变量中的文件不存在时,PHP文件返回404。感谢您的回答!我照你说的做了,但没用。我仍然得到403错误,因为PDF文件在一个受保护的文件夹中,这意味着重定向不起作用。还有什么我可以试试的吗?防护线现在在第一个柱子上。当我删除它们时,您的重写规则似乎有效,但仅适用于文件名中只有一个单词的PDF文件。如果名称包含两个或多个单词,并用空格分隔,则此选项无效。提前谢谢!不幸的是,它仍然是一样的。我尝试了一个类似的URL,其中文件名有两个单词。我得到的错误是404,当变量中的文件不存在时,PHP文件返回404。感谢您的回答!我照你说的做了,但没用。我仍然得到403错误,因为PDF文件在一个受保护的文件夹中,这意味着重定向不起作用。还有什么我可以试试的吗?防护线现在在第一个柱子上。当我删除它们时,您的重写规则似乎有效,但仅适用于文件名中只有一个单词的PDF文件。如果名称包含两个或多个单词,并用空格分隔,则此选项无效。提前谢谢!不幸的是,它仍然是一样的。我尝试了一个类似的URL,其中文件名有两个单词。我得到的错误是404,当变量中的文件不存在时,PHP文件返回404。感谢您的回答!