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

问题描述 投票:1回答:2

我想将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错误,任何建议?

apache .htaccess url mod-rewrite url-rewriting
2个回答
1
投票

您可以在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]

1
投票

只试用:

Options -MultiViews
RewriteRule ^folder/create$ folder/create.php
© www.soinside.com 2019 - 2024. All rights reserved.