取消重写并使用htaccess重定向删除最后一个目录

时间:2013-08-14 20:13:56

标签: .htaccess redirect rewrite

我有一个包含此设置的页面:

Options All -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /demo/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !^(.*)show(/|.*)$
RewriteRule . /demo/index.php [L]
</IfModule>

例如,当您请求页面http://example.com/demo/any_folder/时,它会在不更改URL的情况下加载http://example.com/demo/index.php,以便从数据库中检索数据。嗯,这很有效。 但我想添加和例外。 我需要一个条件,如果你访问http://example.com/demo/any_folder/show,它会加载相同的网址,删除单词“show”但避免实际定义的重定向。因此,它会加载http://example.com/demo/any_folder/而不是http://example.com/demo/index.php。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

网址必须有不同的内容才能重定向到index.php。以下.htaccess代码添加了一个查询参数?show,以区分两个网址。

因为,重定向是内部的;用户永远不会看到参数。

RewriteEngine On
RewriteBase /demo/

RewriteRule ^index\.php$ - [L]
RewriteRule ^(.*)/show/?$ $1?show [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{QUERY_STRING} !^show [NC]
RewriteRule . /demo/index.php [L]