我目前正在创建一个巨大的网站,但我不想使用常规网址来使用清洁/用户友好的网址。我一直在寻找我怎么能基本上根据我的需要定制这些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解决方案?我真的很高兴!
请不要将此问题标记为重复,因为我确实没有找到任何针对我案例的具体内容。
答案 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。祝你好运!