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

Posted

技术标签:

【中文标题】如何在本地主机上使用 htaccess 制作 seo url? [关闭]【英文标题】:How to make seo url with htaccess on localhost? [closed] 【发布时间】:2021-04-11 14:52:38 【问题描述】:

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

127.0.0.1/test/liste.php?id=yeni

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

我怎样才能使这个 SEO 友好如下?

127.0.0.1/test/liste/yeni

我正在通过 xampp 运行站点 localhost。

谢谢

【问题讨论】:

这个问题有很多重复 我尝试了至少 50 次,但没有成功 许多已经过时或不正确 这能回答你的问题吗? Preety url with htaccess 发布您最接近的尝试以及没有成功的地方 【参考方案1】:

这应该是

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

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

更新:

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

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

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

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

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

并且不要忘记在更改 httpd.conf 后重新启动 APACHE

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

所以你现在在 httpd.conf 的末尾有以下几行

RewriteEngine On 
LogLevel alert rewrite:trace3
RewriteRule ^/test/(\w*)/(\w*)/?$  /test/$1.php?id=$2 [NC,L]

重新启动 APACHE!

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

现在查看位于例如的错误日志。在 C:\xampp\apache\logs

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

[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/

【讨论】:

这不起作用我得到 404 not found 错误 如果在 .htaccess 中使用,则从模式中删除前导斜杠 比如? RewriteRule ^test(\w*)/(\w*)$ $1.php?id=$2 [NC,L] 我快疯了 :) 我得到 404 not found 错误 我添加了一些细节和调试信息。如果它仍然不工作。拍下错误日志——就像我在你原来的问题中提到的那样。

以上是关于如何在本地主机上使用 htaccess 制作 seo url? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 密码保护但不在本地主机上

.htaccess 在本地主机上不起作用(manjaro)

htaccess 规则在本地主机上不起作用

本地主机上的 .htaccess 正常,网络服务器上出现 500 内部服务器错误

如何在计算机上本地创建和编辑 .htaccess 并查看更改

自定义重定向在本地主机上不起作用