我和.htaccess争吵了一下。
我在routes.php中有路由,例如:
/category/{categorySlug}
/product/{productSlug}
/tag/{tagSlug}
我需要使用更好看的网址:
some-category.c.html --> /category/{categorySlug}
iphone-7s.p.html --> /product/{productSlug}
samsung-galaxy.t.html --> /tag/{tagSlug}
它不应该使用重定向,只能识别url模式ant继续进行路由重建url。它应该保持在浏览器上。
我已尝试使用RewriteRule ^(。*)。c.html $ / category / $ 1 [NC]的各种变体,但没有成功(所有其他配置都是新安装Laravel 5.5的默认设置):< / p>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Tried various flags...
RewriteRule ^(.*).c.html$ /category/$1 [NC]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
谢谢! :)
答案 0 :(得分:0)
我不确定尝试自定义.htaccess
是最好的方式。
如果您想要这样的路线localhost/some-category.c.html
而不是localhost/category/some-category
。
你应该尝试类似的东西:
Route::get('{categorySlug}.c.html','Controller@method');
Route::get('{productSlug}.p.html','Controller@method');
Route::get('{tagSlug}.t.html','Controller@method');
如果您仍想编辑.htaccess
,可以查看这些链接:
- How to change url? htaccess
- url rewriting using htaccess for category & product in php