首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >清除静态和动态页面的url

清除静态和动态页面的url
EN

Stack Overflow用户
提问于 2015-06-01 05:52:51
回答 2查看 1.2K关注 0票数 0

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

现在,我的.htaccess允许静态页面显示,而不是动态页面。然而,为了使动态页面正常工作,我所做的一切都破坏了静态页面的干净URL。

代码语言:javascript
运行
复制
RewriteEngine On

DirectoryIndex index.php index.html

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

我希望最终结果如下:

代码语言:javascript
运行
复制
http://example.com/about.php -> http://example.com/about

代码语言:javascript
运行
复制
http://example.com/searchresults.php?a=1&b=2 -> http://example.com/searchresults/1/2

我想要做的事有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-01 06:00:48

是的,有可能。

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

其次,需要显式地指定搜索规则。

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

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2015-06-01 06:08:32

为您的htaccess文件尝试下面的代码行。

代码语言:javascript
运行
复制
RewriteEngine on
RewriteRule aboutus/$               about.php   [NC,L,QSA]
RewriteRule searchresults/(.*)/(.*)/$           searchresults.php?a=$1 & b=$2   [NC,L,QSA]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30566451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档