如何在本地主机上使用 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 正常,网络服务器上出现 500 内部服务器错误