我在codeigniter中开发了我的网站。我在.htaccess文件中有几件事要做。
对于index.php
,img
,js
,css
以外的任何页面/资源,我希望它在实际资源之前添加index.php
在网址中。
我有很多静态页面,其中包含unserscore“_”,例如contact_us.php
,our_services.php
等。我希望当用户提供类似www.mywebsite.com/our-services
的网址时,它应该是打开原始页面,即www.mywebsite.com/our_services
。不同页面有1,2个最多7个下划线,例如mywebsite.com/speech_writing_services
这是我目前可以构建的.htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^(/index\.php|/img|/js|/StyleAdmin|/images|/StyleAdmin/images|/css|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule ^([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3_$4 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3_$4_$5 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3_$4_$5_$6 [R=301,L]
这里的问题是,当我给出像www.mywebsite.com/contact_us
这样的网址时,它工作正常,并在地址栏中显示相同的网址。但是,当我提供此网址www.mywebsite.com/contact-us
时,它确实显示了该网页,但浏览器地址栏中显示的网址变为www.mywebsite.com/index.php/contact_us
,而我希望它与www.mywebsite.com/contact_us
index.php
一样删除。
答案 0 :(得分:0)
您需要在重定向后进行路由。
RewriteEngine on
RewriteRule ^([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3_$4 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3_$4_$5 [R=301,L]
RewriteRule ^([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)$ http://www.mywebsite.com/$1_$2_$3_$4_$5_$6 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^(/index\.php|/img|/js|/StyleAdmin|/images|/StyleAdmin/images|/css|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]