简体   繁体   English

.htaccess重写规则不起作用?

[英].htaccess rewrite rule not working?

I am using htaccess for generating clean urls in my project. 我正在使用htaccess在我的项目中生成干净的URL。

Like, I want to convert this url : 像,我想转换这个网址:

https://localhost/erp/profile.php?username=kopyo

to this url: 到这个网址:

https://localhost/erp/profile/kopyo

My htaccess code is: 我的htaccess代码是:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /erp

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

# Code I am using is this line but not working
RewriteRule profile/(.*) profile.php?username=$1

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

Let me know what I am doing wrong in this. 让我知道我在这方面做错了什么。 Thanks 谢谢

Make sure to use proper flags after RewriteRule and re-arrange your rules: 确保在RewriteRule之后使用正确的标志并重新排列规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /erp/

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]    

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,NE,L]

RewriteRule ^profile/(.+)$ profile.php?username=$1 [L,NC,QSA]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM