如何使用.Htaccess为每个页面创建干净的URL?

时间:2013-12-07 17:54:16

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

我目前正在创建一个巨大的网站,但我不想使用常规网址来使用清洁/用户友好的网址。我一直在寻找我怎么能基本上根据我的需要定制这些Apache Mod Rewrite规则,但是我找不到任何针对我的特定问题的解决方案。

下面你可以阅读我想通过URL实现的目标(我不打算每次都写域名,只需想象:http://www.example.com在URL部分之前。“ / p>

/register//register ---> /register.php(它应该支持这两种变体。)

我实际上有更多的文件用于注册,我希望可以使用“part”字来访问它们,如:

/register/part1//register/part1 ---> /register.php?part=1(它应该支持这两种变体。)

另外,如果我有一个以上的查询varialbe怎么办? (比如“personal = 1”)

/register/part1/personal//register/part1/personal ---> /register.php?part=1&personal=1

如果我有更多这些查询怎么办,但我以前不能指定所有这些查询?可以输入任何这些。 (比如“事物,名称,工作等”)

/register/part1/personal/Nicky//register/part1/personal/Nicky ---> /register.php?part=1&personal=1&name=Nicky

或任何你能想象到的变化:

/register/part1/personal/thing/employee//register/part1/personal/thing/employee ---> /register.php?part=1&personal=1&thing=1&job=employee

编辑: 这是我尝试过的,但它只是将页面重定向到index.php:/

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

所以我给了你很多例子,我想基本实现的。除了“register.php”之外,我还可以拥有很多其他页面,因此它不应该只针对该页面。我也想要非常重要的,如果有人去了例如:register.php?part=1它应该将它们重定向到适当的Clean URL(当然是在PHP中)。

我还想问一下,我应该在PHP端做些什么来使一切变好?我看到Wordpress有一个非常好的解决方案,这是非常自动的,它看起来很棒!

有没有人可以解释我如何为此创建一个伟大的.HTACCESS mod_rewrite解决方案?我真的很高兴!

请不要将此问题标记为重复,因为我确实没有找到任何针对我案例的具体内容。

2 个答案:

答案 0 :(得分:2)

你提到了WordPress,has something like this

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

这样做是将任何与真实文件或目录不匹配的请求重定向到index.php脚本。然后该脚本将决定显示哪个页面。它会通过查看包含$_SERVER['REQUEST_URI']

之类的路径的register/part1来实现

使用此方法找出要显示的页面会更容易,因为在PHP中有很多方法可以解析该路径字符串,然后将其映射到函数

答案 1 :(得分:0)

您应该可以从htaccess中构建这样的干净URL:

RewriteEngine On
RewriteRule ^index\.html$ /index.php?pageID=Home [L]
RewriteRule ^about-my-homepage\.html$ /index.php?pageID=About [L]
RewriteRule ^contact-us\.html$ /index.php?pageID=Contact [L]

第一个是您要输出的(“干净”URL),第二个是您实际想要打开的URL。祝你好运!