如何排除GET变量并重写为重定向URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何排除GET变量并重写为重定向URL相关的知识,希望对你有一定的参考价值。

我想将test.com/folder/create重定向到test.com/folder/create(.php)但是在/folder/之后的任何东西被认为是$_GET[]变量,下面的行

 RewriteCond %{REQUEST_URI} !^/folder/index.php$ [NC] 
 RewriteRule ^folder/([^/]*)$ /folder/index.php?type=$1

我试过了

 RewriteCond %{REQUEST_URI} !^/folder/create.php$ [NC]
 RewriteRule ^folder/create$ /folder/create.php

但没有运气(错误500),任何人都可以指出我在如何做到这一点的正确方向?

编辑:仍然试图在网上搜索答案,没有运气

编辑:小编辑,当前代码

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !^item.php$ 

RewriteRule ^([^/]+)/?$ index.php?type=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?type=$1&page=$2 [L,QSA]

RewriteRule ^item/([^/]+)/?$ item.php?id=$1 [L,QSA]
RewriteRule ^item/([^/]+)/([^/]+)/?$ item.php?id=$1&page=$2 [L,QSA]

重写基础是/ folder / /文件夹/项目工作,并重定向到item.php /文件夹/项目/ 2给出500错误,任何建议?

答案

您可以在folder/.htaccess中使用这些规则(不在站点根目录.htaccess中):

DirectoryIndex index.php
RewriteEngine On
RewriteBase /folder/

# append .php extension to every request that has a corresponding .php file
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

# rewrite all non-existing files and folders to index,php?type=...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .+ index.php?type=$0 [L,QSA]
另一答案

只试用:

Options -MultiViews
RewriteRule ^folder/create$ folder/create.php

以上是关于如何排除GET变量并重写为重定向URL的主要内容,如果未能解决你的问题,请参考以下文章

IIS URL将Http重写为Https,排除单个URL

如何使用 Apache 在代理设置中重写位置响应标头?

如何在php中重写Get变量的url [重复]

从重定向重写规则中排除图像文件夹

在 URL 重写模式下的 GET 请求中,句点“.”不会进入 PHP 变量 [关闭]

Paypal 自适应支付重定向 URL GET 变量