清除静态和动态页面的URL

时间:2015-06-01 05:52:52

标签: php .htaccess mod-rewrite clean-urls

我的网站包含没有变量的静态页面(例如:about.php)和一些动态页面(例如:searchresults.php?a = 1& b = 2)

现在我的.htaccess允许显示静态页面,但不允许显示动态页面。然而,我试图使动态页面工作的一切都打破了静态页面的干净URL。

RewriteEngine On

DirectoryIndex index.php index.html

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

我希望最终结果如下:

http://example.com/about.php -> http://example.com/about

http://example.com/searchresults.php?a=1&b=2 -> http://example.com/searchresults/1/2

我正在寻找可能吗?

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。

首先,您需要更改规则以删除扩展程序。目前,您有两个匹配任何内容的规则(意味着第二个规则永远不会触发),第二个规则没有条件。

其次,您的搜索规则需要明确指定。

您的.htaccess文件现在应如下所示:

RewriteEngine on

# Rewrite the search page

RewriteRule ^searchresults/([^/]+)/([^/]+)/?$ searchresults.php?a=$1&b=$2 [QSA,L]

# Allow requests without php/html extensions

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^\.]+)$ $1.html [L]

答案 1 :(得分:0)

尝试下面的htaccess文件代码。

RewriteEngine on
RewriteRule aboutus/$               about.php   [NC,L,QSA]
RewriteRule searchresults/(.*)/(.*)/$           searchresults.php?a=$1 & b=$2   [NC,L,QSA]