Custom rewrite rule

时间:2016-08-29 作者:Dysan G.

我需要做一些URL重写,但这对我来说是全新的,我尝试了一些事情,但似乎没有任何效果。例如:我有一个如下所示的URL。

http://example.com/directorio/?filter=all&search_text=&type=medicos&location=quito&cs_directory_search_location=Yes&search_view=&goe_location_enable=No&cs_loc_max_input=5&cs_loc_incr_step=1&submit=&action=cs_directory_map_search
我想让它看起来像:

http://example.com/directorio/medicos/quito/
我试过这样的方法.htaccess.

RewriteRule ^directorio/([a-z]+)/([a-z]+)/?$ index.php?pagename=directorio&filter=all&search_text=&type=$1&location=$2&cs_directory_search_location=Yes&search_view=&goe_location_enable=No&cs_loc_max_input=5&cs_loc_incr_step=1&submit=&action=cs_directory_map_search [L]
这行不通。还尝试了。。。

add_action(\'init\', \'my_custom_rewrites\' );
function my_custom_rewrites(){

    add_rewrite_tag( \'%filter%\', \'([^/]+)\' );
    add_rewrite_tag( \'%search_text%\', \'([^/]+)\' );
    add_rewrite_tag( \'%type%\', \'([^/]+)\' );
    add_rewrite_tag( \'%location%\', \'([^/]+)\' );
    add_rewrite_tag( \'%cs_directory_search_location%\', \'([^/]+)\' );
    add_rewrite_tag( \'%search_view%\', \'([^/]+)\' );
    add_rewrite_tag( \'%goe_location_enable%\', \'([^/]+)\' );
    add_rewrite_tag( \'%cs_loc_max_input%\', \'([^/]+)\' );
    add_rewrite_tag( \'%cs_loc_incr_step%\', \'([^/]+)\' );
    add_rewrite_tag( \'%submit%\', \'([^/]+)\' );
    add_rewrite_tag( \'%action%\', \'([^/]+)\' );

    add_rewrite_rule(
        \'directorio/([a-z]+)/([a-z]+)/?$\',
        \'index.php?pagename=directorio&filter=all&search_text=&type=$matches[1]&location=$matches[2]&cs_directory_search_location=Yes&search_view=&goe_location_enable=No&cs_loc_max_input=5&cs_loc_incr_step=1&submit=&action=cs_directory_map_search\',
        \'top\' );
}
我也读了一些关于查询变量的内容,但正如我之前所说的,这是我们购买的一个主题,它使用$_GET 而不是get_query_var...

我不确定那里有什么问题,但我没有主意,这是一个艰难的开始学习的方法RewriteRules. 希望有人能帮忙。

你好@米洛,谢谢你的回答,还有一件事,我的网站是实时的,我的本地主机上也有相同的网站,在上传之前测试更改。问题是,在我的localhost中,我编辑了。htaccess直接访问并使用此规则。

RewriteRule ^directorio/([a-z]+)/([a-z]+)/?$ index.php/directorio/?filter=all&search_text=&type=$1&location=$2&cs_directory_search_location=Yes&search_view=&goe_location_enable=No&cs_loc_max_input=5&cs_loc_incr_step=1&submit=&action=cs_directory_map_search [L]
这个规则,加上那个丑陋的url,效果很好,但如果我把同样的规则放在直播网站上,它就根本不起作用了。此外,如果在那个实时站点上,如果我使用相同的规则,但使用绝对路径,我可以毫无问题地获得重定向,它只是不允许我执行Rewrite. 是否可能是我的主机在Apache服务器上有一些配置导致了该问题?

1 个回复
SO网友:Ethan O\'Sullivan

将以下内容添加到.htaccess, 在<IfModule mod_rewrite.c>:

RewriteCond %{QUERY_STRING} (^|&)filter=all&search_text=&type=(.*)&location=(.*)&cs_directory_search_location=Yes&search_view=&goe_location_enable=No&cs_loc_max_input=5&cs_loc_incr_step=1&submit=&action=cs_directory_map_search
RewriteRule ^(.*)$ /directorio/%2/%3/? [R=301,L]
您可以通过以下方式确认逻辑.htaccess tester. 您的默认值.htaccess 从WordPress创建的现在应该如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom RewriteRule
RewriteCond %{QUERY_STRING} (^|&)filter=all&search_text=&type=(.*)&location=(.*)&cs_directory_search_location=Yes&search_view=&goe_location_enable=No&cs_loc_max_input=5&cs_loc_incr_step=1&submit=&action=cs_directory_map_search
RewriteRule ^(.*)$ /directorio/%2/%3/? [R=301,L]
</IfModule>
# END WordPress

相关推荐

Redirect Css files to https

在哪里可以找到负责调用Css文件的文件,并测试它们的链接是http还是https?我想测试请求是否为https,如果是,那么很好,如果不是,请将其更改为https在函数中。php我找到了负责调用主题Css的函数,下面是它的代码:if (!function_exists(\'jobcareer_front_scripts\')) { function jobcareer_front_scripts() { global $jobcareer_options;