我有一个跨多个页面分布的内容网站,但只有一个index.php文件,该文件根据页面编号从数据库中检索数据。
目前,网址方向必须类似于domainname.com/Page/content.php?page=3
我注意到,很多网站都有类似网址的结构,例如:
domainname.com/Page/3
我知道如何将其更改为domainname.com/Page/?page=3
,但我希望删除?page
部分。
如何在不单独为每个页面创建目录的情况下执行此操作,内容会不断增长,因此每个页面都会发生更改。
由于
答案 0 :(得分:4)
这些网站使用mod_rewrite使用正则表达式
对请求的URL执行“重写”编辑:
重写:domainname.com/Page/3
:domainname.com/Page/content.php?page=3
在.htaccess
文件中看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z]*)/(.*)$ /content.php/$1/page=$2 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /error_with_mod_rewrite.html
</IfModule>
这里我也对var名称限制为大写或小写的字母。
答案 1 :(得分:0)
“URL重写”是执行自定义URL结构的功能。这是大多数常见Web服务器中非常常见且重要的功能。 URL重写不仅适用于Apache。例如,
Apache使用Mod_Rewrite模块。
Nginx使用'Rewrite'和'Try_Files'指令。
Cherokee具有内置功能,可从管理员面板配置。
还有更多的例子,这些只是我曾经使用过的一些例子。另外,我听说过一些项目在编程代码中重写了。对于新的特定于语言的Web服务器,这种情况变得更加普遍。