我是php的新手。 我的.htaccess文件位于
之下DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?qa-rewrite=$0&%{QUERY_STRING} [L]
</IfModule>
有了这个,以下网址格式正常工作
/?qa=123/why-do-birds-sing
/?qa=123&qa_1=why-do-birds-sing
/index.php?qa=123&qa_1=why-do-birds-sing
但我想进入以下格式
site.com/123/why-do-birds-sing
我尝试添加以下行
RewriteRule ^.*$ index.php/qa-rewrite=$0&%{QUERY_STRING} [L]
但site.com/123/why-do-birds-sing
无效。我应该做些什么来改变所需的网址格式?
P.S site.com/index.php/123/why-do-birds-sing
正在运行,但我想重写没有index.php
答案 0 :(得分:1)
重写规则的工作方式是它们接受参数中的任何内容,并将url重构为更易读且用户友好的URL。同时将参数(秘密地)传递到您的页面以供使用。
然后,您可以使用$_GET['my-parameter']
以下是您需要的重写规则。
在这部分^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)$
中,它将斜杠之前的所有内容写为第一个参数,将斜杠之后的所有内容写为第二个参数。允许任何大写字母,小写字母,数字0-9,下划线和&amp;的混合。连字符。
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)$ index.php?qa=$1&qa_1=$2 [NC,L]
然后构建您的链接...... 123/why-do-birds-sing
您的网址将显示为http://example.com/123/why-do-birds-sing
快乐的编码!