繁体   English   中英

如何使用.htaccess为每个页面创建Clean URL?

[英]How to create Clean URL for every page using .Htaccess?

我目前正在建立一个庞大的网站,但是我要使用常规URL,而不是常规URL。 我一直在寻找如何基本上根据自己的需要定制这些Apache Mod Rewrite规则,但是我找不到针对我的特定问题的任何解决方案。

您可以在下面阅读目标,该目标是我希望通过URL实现的(我不想每次都写域名,只需想象一下:URL之前的http://www.example.com )。

/register//register ---> /register.php (它应该支持两个版本。)

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

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

另外,如果我有多个查询变量,该怎么办? (例如“个人= 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解决方案? 我真的会很高兴!

请不要将此问题标记为重复,因为我确实没有发现与我的案子有关的任何内容。

您提到了WordPress,它的内容如下

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

这是将与真实文件或目录不匹配的任何请求重定向到index.php脚本。 然后,该脚本将决定要显示的页面。 它将通过查看$_SERVER['REQUEST_URI']来做到这一点,该文件拥有一个类似于register/part1的路径。

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

您应该能够从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),第二个是您实际要打开的地址。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM