可以使用htaccess将下划线“_”替换为“/”吗? 例如,我想这 http://example.com/empresa_historia-da-empresa.php 留好 http://example.com/empresa/historia-da-empresa如何使用htaccess将下划线“_”替换为“/”?
这可能吗?
可以使用htaccess将下划线“_”替换为“/”吗? 例如,我想这 http://example.com/empresa_historia-da-empresa.php 留好 http://example.com/empresa/historia-da-empresa如何使用htaccess将下划线“_”替换为“/”?
这可能吗?
您可以使用此:
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteRule !\.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1/$2/$3/$4/$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1/$2/$3/$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1/$2/$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1/$2 [E=uscor:Yes]
RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*) http://example.com/$1 [R=301,L]
发现这里(和改了一下):http://www.askapache.com/htaccess/modrewrite-tips-tricks.html#Rewrite_underscores_hyphens_SEO_URL 它将为1至4 underscroes工作
实际上最多可以使用10个下划线。由于第一条规则取代了它发现的前四条。但是接下来执行第二个替换下三个下划线等。即使有更多的10 apache将继续删除10个下划线和重定向,直到没有更多的下划线。 – Gerben
你说得对,最多可以使用10个下划线。但是如果我使用11,URL“a_b_c_d_e_f_g_h_i_j_k_l.php”被重定向到“a/b/c/d/e/f/o/h/i/j/k/l.php/b/c/d/e /f/o/h/i/j/k/l.php/b/c/d/e/f/o/h/i/j/k/l.php/b/c/d/e/f/o ...“的URL没有结束,所以浏览器显示414错误。 – Christopher
你可能就在那里。可能在所有重写过程中添加“L”标志将解决此问题。 – Gerben
如果你有机会获得httpd.conf中更容易使用一个RewriteMap来做到这一点。 – Ansari