如何在本地主机上使用 htaccess 制作 seo url?

How to make seo url with htaccess on localhost?

我有 liste.php 个文件, 我这样调用 php 文件

127.0.0.1/test/liste.php?id=yeni

liste.php 文件位于站点。com/test 文件夹。

如何使这个 SEO 友好如下?

127.0.0.1/test/liste/yeni

我是 运行 站点本地主机,来自 xampp。

谢谢

这应该是

抱歉 我忘记了目标中的 /test :-((边看电视边回答正则表达式问题不是个好主意)

将以下内容放入您的 httpd.conf

更新:

RewriteEngine On 
RewriteRule ^/test/(\w*)/(\w*)/?$  /test/.php?id= [NC,L]

这将执行以下操作:http:///test/liste/yeni/

它将获取 /test/ 和下一个斜杠 / 之间的文本,在这种情况下 liste 并将其用作 php 文件的名称

并将此 cas yeni 中斜线后的文本(带或不带尾部斜线)作为 id

如果它应该只重写为 /test/liste.php?id=xyz 所以只是 id 是可变的而不是 php 文件的名称,那么它甚至是更简单。

并且不要忘记在更改 httpd.conf

后重新启动 APACHE

如果这不起作用 然后打开跟踪添加行 重写规则之前的 LogLevel 警报 rewrite:trace3。

所以你现在在 httpd.conf

的末尾有以下几行
RewriteEngine On 
LogLevel alert rewrite:trace3
RewriteRule ^/test/(\w*)/(\w*)/?$  /test/.php?id= [NC,L]

重启 APACHE!

然后使用浏览器访问 http:///test/liste/yeni/

现在查看错误日志,例如在 C:\xampp\apache\logs

现在您可以看到 mod_rewrite 从最初的干净 URL 到“真正的 url” 的所有单个步骤,并可以查看它是否有效或在哪个阶段发生故障.

[Tue Jan 05 22:58:37.283228 2021] [rewrite:trace2] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - - [127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] init rewrite engine with requested uri /test/liste/yeni/

[Tue Jan 05 22:58:37.284227 2021] [rewrite:trace3] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - - [127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] applying pattern '^/test/(\w*)/(\w*)/?$' to uri '/test/liste/yeni/'

[Tue Jan 05 22:58:37.284227 2021] [rewrite:trace2] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - - [127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] rewrite '/test/liste/yeni/' -> '/test/liste.php?id=yeni'

[Tue Jan 05 22:58:37.284227 2021] [rewrite:trace3] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - - [127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] split uri=/test/liste.php?id=yeni -> uri=/test/liste.php, args=id=yeni

[Tue Jan 05 22:58:37.284227 2021] [rewrite:trace2] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - -[127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] local path result: /test/liste.php

[Tue Jan 05 22:58:37.284227 2021] [rewrite:trace2] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - - [127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] prefixed with document_root to C:/xampp/htdocs/test/liste.php

[Tue Jan 05 22:58:37.284227 2021] [rewrite:trace1] [pid 6724:tid 1828] mod_rewrite.c(483): [client 127.0.0.1:54029] 127.0.0.1 - -    [127.0.0.1/sid#2a4d7e8a298][rid#2a4d8998330/initial] go-ahead with C:/xampp/htdocs/test/liste.php [OK]

它成功了:-)瞧

在 access.log 中你只会得到一行,但正确的代码是 200 :-)

127.0.0.1 - - [05/Jan/2021:22:58:37 +0100] "GET /test/liste/yeni/ HTTP/1.1" 200 154 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"

如果它再次工作,请删除跟踪行或在该行的开头放置一个 # 以将其标记为注释

参考: https://httpd.apache.org/docs/2.4/rewrite/intro.html

https://httpd.apache.org/docs/2.4/rewrite/flags.html

在这里尝试您的正则表达式并以交互方式学习:(您必须使用反斜杠转义 / ) https://regex101.com/