Htaccess RewriteRule没有传递参数

时间:2017-07-05 01:29:35

标签: apache .htaccess mod-rewrite

我有一个Plesk Onyx服务器,在Centos 7.2上运行,Apache 2.4 Nginx关闭,我有以下htaccess

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !(\.js|\.css|\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.ttf|\.woff|\.woff2|\.otf|\.eot|\.ico|\.svg|\.txt|\.xml|\.json)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder1/folder2/([0-9]+)/(.*)[/]$ /folder1/folder2/index.php?get_var=$1 [NC,QSA,L]

rwwite工作正常,但它没有通过get_var 在index.php中我有一个var_dump($ _GET),如果我访问它是空的 https://sample_domain.com/folder1/folder2/123/

我想将123值输入get_var 尝试禁用-MultiViews而没有运气

1 个答案:

答案 0 :(得分:1)

该规则根本无法用于您提供的网址。它只适用于:

https://sample_domain.com/folder1/folder2/123//

或者:

https://sample_domain.com/folder1/folder2/123/example/

试试这个:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !=/folder1/folder2/index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder1/folder2/([0-9]+)/$ /folder1/folder2/index.php?get_var=$1 [NC,QSA,L]

我删除了不必要的测试,因为它只能是一个目录。我想你甚至不需要那个测试?您是否在/folder1/folder2/中只有数字命名的现有目录?如果不删除该测试以提高性能。

<强>更新

要在.htaccess中的/folder1/folder2/文件中进行操作,请将其更改为:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/?$ index.php?get_var=$1 [NC,QSA,L]