PHP自定义URL段塞
我有一个网站,主要是数据库驱动的,有几个页面是硬编码的html文件(联系和地图)。所有其他页面都存储在数据库中 如何设置htaccess以允许用户执行此操作,而不更改url www.website.com/contact (-实际加载contact.html页面) www.website.com/about (-实际加载about.html页面) www.website.com/anything (-实际加载page.php?title=anything) 编辑:我的更新代码PHP自定义URL段塞,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我有一个网站,主要是数据库驱动的,有几个页面是硬编码的html文件(联系和地图)。所有其他页面都存储在数据库中 如何设置htaccess以允许用户执行此操作,而不更改url www.website.com/contact (-实际加载contact.html页面) www.website.com/about (-实际加载about.html页面) www.website.com/anything (-实际加载page.php?title=anything) 编辑:我的更新代码 RewriteEn
RewriteEngine on
# RewriteBase /mcw/
# i've tried with and without rewritebase
RewriteRule ^(contact|about|index)$ /$1.html
RewriteCond %{REQUEST_URI} !^/(?:contact|about|index)\.html$
RewriteCond %{REQUEST_URI} !^/(?:admins|css|fonts|img|inc|js)/
RewriteRule ^(.*)$ /page.php?name=$1
您可以这样做:
RewriteRule ^(contact|about)$ /$1.html
RewriteCond %{REQUEST_URI} !^/(?:contact|about)\.html$
RewriteCond %{REQUEST_URI} !^/(?:page\.php|images|scripts|css)/
RewriteRule ^(.*)$ /page.php?title=$1
我假设您也有不想重写的图像、css等,因此作为示例,我排除了
/images
、/scripts
和/css
目录。您需要修改以满足您的需要,如果不需要,也可以删除该行。您可以这样做:
RewriteRule ^(contact|about)$ /$1.html
RewriteCond %{REQUEST_URI} !^/(?:contact|about)\.html$
RewriteCond %{REQUEST_URI} !^/(?:page\.php|images|scripts|css)/
RewriteRule ^(.*)$ /page.php?title=$1
我假设您也有不想重写的图像、css等,因此作为示例,我排除了
/images
、/scripts
和/css
目录。您将需要修改以满足您的需要,或者如果不需要,请删除该行。RewriteCond%{REQUEST_FILENAME}上的RewriteEngine-f RewriteRule^([^\.]+)$$1.php[NC,L]RewriteRule^([^\.]+)$$1.html[NC,L]您正在使用路由器吗?RewriteCond%{REQUEST_FILENAME}上的RewriteEngine-f RewriteRule^([^\.]+)$$1.php[NC,L]RewriteRule^([^\.]+)$$1.html[NC,L]您正在使用路由器吗?看起来应该可以工作了!我对文件夹做了一点修改,添加了index.html,它给了我一个404。请注意,我把这个网站放在一个名为“mcw”的文件夹中,这个文件夹在开发服务器上,会有什么不同吗?请在你的帖子的更新中发布你修改过的代码,并让我知道什么是404。可能是安装程序未处理.htaccess
文件,这意味着将AllowOverride all
添加到主配置中的
。您可以通过在.htaccess
中的一行添加类似“blahblahblah”的内容来测试它,并查看您的站点是否出现服务器错误。如果没有,则不会处理.htaccess
文件。实际上,最好将规则放在主配置中,但它们需要稍加修改。我更新了代码。是的,只是反复检查,htaccess正在处理中。代码看起来很好。什么是404?我真的不知道。不管我是尝试/index.html、/something还是将其留空。一切都触发了404。我现在正在胡闹,但我没有任何运气,看起来它应该会起作用!我对文件夹做了一点修改,添加了index.html,它给了我一个404。请注意,我把这个网站放在一个名为“mcw”的文件夹中,这个文件夹在开发服务器上,会有什么不同吗?请在你的帖子的更新中发布你修改过的代码,并让我知道什么是404。可能是安装程序未处理.htaccess
文件,这意味着将AllowOverride all
添加到主配置中的
。您可以通过在.htaccess
中的一行添加类似“blahblahblah”的内容来测试它,并查看您的站点是否出现服务器错误。如果没有,则不会处理.htaccess
文件。实际上,最好将规则放在主配置中,但它们需要稍加修改。我更新了代码。是的,只是反复检查,htaccess正在处理中。代码看起来很好。什么是404?我真的不知道。不管我是尝试/index.html、/something还是将其留空。一切都触发了404。我现在在胡闹,但我一点运气都没有