.htaccess 查询字符串重写
.htaccess Query String Rewrite
几个小时以来一直在兜圈子,希望能得到一点帮助。
我正在尝试重写包含查询字符串(前面有 company.php)的 URL。
我找到了一些方法让重写本身起作用,但它总是显示 404 :(
例如我需要重写(使用示例值):
http://test.domain.com/company.php?companynumber=05614768
至:
http://test.domain.com/company/05614768/
这是我设法重写但 404ing 的一对:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/company\.php$
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$
RewriteRule ^(.*)$ http://test.domain.com/company/%1/? [R,L]
和
RewriteEngine On
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$
RewriteRule ^company\.php$ http://test.domain.com/company/%1/? [R,L]
我想我需要弄清楚如何进行内部重定向以及外部重定向?但是我真的很挣扎...
Centos 6.6 / Apache 2.4.12
现在,如果这是您的旧到新重定向:
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$
RewriteRule ^company\.php$ http://test.domain.com/company/%1/? [R,L]
然后通过以下方式重新映射新传入的 URL:
RewriteRule ^company/(\d+)/?$ company.php?companynumber= [END]
注意这个:
- 必须是规则此后。
- 应该携带
[END]
标志以避免另一轮内部重写。
- 只允许数字
\d+
占位符。
另请参见 Reference: mod_rewrite, URL rewriting and “pretty links” explained 上的 "Ping-Pong rewrites"。这些重写应该只是作为临时措施。在您的 HTML 模板中建立新的 URLs。
几个小时以来一直在兜圈子,希望能得到一点帮助。
我正在尝试重写包含查询字符串(前面有 company.php)的 URL。
我找到了一些方法让重写本身起作用,但它总是显示 404 :(
例如我需要重写(使用示例值):
http://test.domain.com/company.php?companynumber=05614768
至:
http://test.domain.com/company/05614768/
这是我设法重写但 404ing 的一对:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/company\.php$
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$
RewriteRule ^(.*)$ http://test.domain.com/company/%1/? [R,L]
和
RewriteEngine On
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$
RewriteRule ^company\.php$ http://test.domain.com/company/%1/? [R,L]
我想我需要弄清楚如何进行内部重定向以及外部重定向?但是我真的很挣扎...
Centos 6.6 / Apache 2.4.12
现在,如果这是您的旧到新重定向:
RewriteCond %{QUERY_STRING} ^companynumber=([0-9]*)$
RewriteRule ^company\.php$ http://test.domain.com/company/%1/? [R,L]
然后通过以下方式重新映射新传入的 URL:
RewriteRule ^company/(\d+)/?$ company.php?companynumber= [END]
注意这个:
- 必须是规则此后。
- 应该携带
[END]
标志以避免另一轮内部重写。 - 只允许数字
\d+
占位符。
另请参见 Reference: mod_rewrite, URL rewriting and “pretty links” explained 上的 "Ping-Pong rewrites"。这些重写应该只是作为临时措施。在您的 HTML 模板中建立新的 URLs。