Search mod rewrite搜索框的干净url

Search mod rewrite搜索框的干净url,search,mod-rewrite,httpd.conf,clean-urls,Search,Mod Rewrite,Httpd.conf,Clean Urls,我已启用mod rewrite以删除所有页面扩展 这是在httpd.conf中完成的,因为我在windows上使用apache 我的设置是 <IfModule mod_rewrite.c> Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.html [NC,L] <

我已启用mod rewrite以删除所有页面扩展

这是在httpd.conf中完成的,因为我在windows上使用apache

我的设置是

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
</IfModule>
我希望我的URL看起来像:

domain.com/search/music
但是,我也希望能够打字

domain.com/search/abba
它将加载页面search.html,我们称之为search,它将添加参数?q=abba,但在URL栏中仍然像上面的示例一样

我相信这可以通过mod rewrite实现,但我不知道如何表达


提前感谢您对我的帮助:

使用html中的URL类型:domain.com/search/music

将其添加到DocumentRoot的.htaccess文件中

Options +FollowSymLinks +Indexes -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} (search)/([\w\d]+) [NC]
RewriteRule ^ %1.html?q=%2 [L,QSA]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
或者将其添加到.conf文件中


您可以只添加一个简单的重写规则:

RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]
总而言之:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
   RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]
</IfModule>
我最喜欢的检查regexp的工具:


别忘了选择eregPOSIX而不是pregPCRE

你的接受无效。改进一下,否则你将不再在这里接受帮助。我该怎么做?我是stack exchange的新手,抱歉,这给了我错误页面,我在httpd.conf中尝试过,但在htaccess中尝试过,但没有成功:cry:我有一个针对所有错误的通用错误页面,但apache日志显示302@DJ-P.I.M.P这不应该是302重定向,因为这是内部重定向。你还有其他的重写规则吗?按照你的建议做了所有的事情,新的行没有出现任何问题,所以我很高兴,但它仍然不会重写新的行url@DJ-P.I.M.P删除.html的规则在哪里?尝试了代码,但在我提交表单时它不会自动重写,当我在url中键入/search/music时,它也会加载错误页面。你确定每次修改vhost时都要重新启动服务器吗?它是vhost还是.htaccess?是的,如果修改htaccess或httpd.conf,我总是重新启动apache服务器。。。。我不确定我是否需要访问htaccess,但我无论如何都需要
RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]
<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
   RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]
</IfModule>
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On