【问题标题】:Htaccess RewriteRule not passing parametersHtaccess RewriteRule 不传递参数
【发布时间】:2017-07-05 01:29:35
【问题描述】:

我有一个 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 并没有运气

【问题讨论】:

  • 将您的 Options 行更改为 Options +FollowSymLinks -MultiViews

标签: apache .htaccess mod-rewrite


【解决方案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/ 中是否有现有目录,仅以数字命名?如果不删除该测试以提高性能。

更新

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

Options +FollowSymLinks
RewriteEngine On

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

【讨论】:

  • 我仍然没有得到 index.php 中的 $_GET['get_var']
  • 那你肯定有其他规则干扰这个。
  • 这就是我重写规则的全部内容
  • 这个规则对我来说非常有效,$_GET['get_var'] 给了我'123'。您的 .htaccess 在网站的根目录中吗?
  • 不,它在一个子文件夹中,这仅适用于该文件夹
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 2011-05-03
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多