wil*_*amg 0 apache .htaccess mod-rewrite
我有mod_rewrite在我的大部分网站上工作.现在我有一个通常会指向的搜索
search.php?keyword=KEYWORD
Run Code Online (Sandbox Code Playgroud)
而我正在尝试重写它
search/?keyword=KEYWORD
Run Code Online (Sandbox Code Playgroud)
只是为了让它更清洁一点.所以这是我的mod_rewrite.(还有其他规则我只是发布了一个不起作用的规则.)
RewriteRule ^search/?keyword=([^/\.]+)/?$ search.php?search=$1
Run Code Online (Sandbox Code Playgroud)
当我在地址栏中输入我希望它的搜索方式时,我得到一个页面告诉我它是一个"断开链接"(我猜这是Chrome相当于404错误).那么我做错了什么?我认为问题是'='或'?' 登录规则(第一部分),因为当我将?keyword = part取出时,它可以正常工作.那有意义吗?
编辑:这是我的完整.htaccess代码:
RewriteEngine on
RewriteRule ^$ index.php
RewriteRule ^thoughts$ archives.php
RewriteRule ^thoughts/$ archives.php
RewriteRule ^about$ about.php
RewriteRule ^about/$ about.php
RewriteRule ^search/\?keyword=([^/]+)$ search.php?search=$1
RewriteRule ^tags/([^/]+)$ tags.php?tag=$1
RewriteRule ^thoughts/([^/]+)$ post.php?title=$1 [L]
Run Code Online (Sandbox Code Playgroud)
仍有错误页面...
如果你只是想改造:
search.php?keyword=KEYWORD
Run Code Online (Sandbox Code Playgroud)
成:
search/?keyword=KEYWORD
Run Code Online (Sandbox Code Playgroud)
你需要做的就是:
RewriteRule ^search/$ search.php [QSA]
Run Code Online (Sandbox Code Playgroud)
QSA标志表示"查询字符串追加",并通过GET传递给search.php:
search/?keyword=KEYWORDD
search/?name=value&name2=value2
Run Code Online (Sandbox Code Playgroud)
您可能还想查看Apache MultiViews,它将每个/ foo请求发送到它在/目录中找到的任何foo.*文件,尽管它们被认为是坏的.
| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |