apache - mod_rewrite - 强制重定向到重写的 URL

标签 apache .htaccess mod-rewrite redirect

我有以下 URL [1]:

www.domain.com/?search=somequery

我想重定向到[2]

www.domain.com/search/somequery

我在 .htaccess 中使用以下代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ /?search=$1 [L]

上面的代码工作得很好,因为服务器可以理解这两个 URL:[1] 和 [2]。但是,如果用户访问 [1] URL,我无法弄清楚如何强制重定向到 [2] URL

最佳答案

试试这个

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /\?search=([^&\ ]+)
RewriteRule ^ search/%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ /?search=$1 [L]

关于apache - mod_rewrite - 强制重定向到重写的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30842625/

相关文章:

php - 具有多个变量的 Mod_rewrite

apache - 无法让 SSL 工作。 Apache2/Ubuntu

apache - 如何限制特定 IP 范围查看 .htaccess 中的特定页面?

laravel - Heroku Laravel 上的 HTTPS 重定向无法正常工作

.htaccess/.htpasswd 如果位于某个 IP 地址则绕过

.htaccess - 如何使用 htaccess 关闭 Etag?

mod-rewrite - Amazon S3 上的 Mod_rewrite

Apache RewriteRule 仅允许白名单 URL

regex - 如何将Apache告诉与此相对的LocationMatch?

wordpress - 无法接收 PayPal IPN - PayPal 总是收到 403 错误