Php .htaccess快速url修复程序
我有以下.htaccess脚本:Php .htaccess快速url修复程序,php,.htaccess,Php,.htaccess,我有以下.htaccess脚本: RewriteEngine On RewriteBase / # remove enter code here.php; use THE_REQUEST to prevent infinite loops RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP RewriteRule (.*)\.php$ $1 [R=301] # remove index RewriteRule (.*)/index$ $1/ [R
RewriteEngine On
RewriteBase /
# remove enter code here.php; use THE_REQUEST to prevent infinite loops
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]
# remove index
RewriteRule (.*)/index$ $1/ [R=301]
# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{HTTP_HOST} ^loaidesign.co.uk [NC]
RewriteRule ^(.*)$ http://www.loaidesign.co.uk/$1 [R=301,L]
它创建了一个URL,比如:有没有办法摆脱
.php?project=
并用/so代替它,它只会说www.loaidesign.co.uk/projects/Wix_网站
?还有如何将“u”改为“-”?我还没有测试过它,但我相信会是:
RewriteBase /projects/
RewriteRule ^/([^/]+)/([^/]+)$ $1.php?project=$2
编辑:对其进行测试,它确实起作用。在末尾
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/projects/(.*[^/])$ projects.php?project=$1 [QSA,L]
它将把projects/*中的所有内容重写为projects.php?project=*
RewriteCond %{REQUEST_URI} ^/projects\.php$
RewriteCond %{QUERY_STRING} ^project=([a-z_]*)$ [NC]
RewriteRule ^(.*)$ http://www.loaidesign.co.uk/project/%1 [L]
这将导致像http://www.loaidesign.co.uk/project/Wix_Websites
。测试和改编自
[编辑]经过多次评论,我认为你想要的恰恰相反。您希望在您的页面上有漂亮的URL(如/project/foo
),然后将其转换为内部表示形式(?projects.php?project=foo
):
[edit2]连同我答案的第一部分,你可以实现你想要的:
RewriteCond %{REQUEST_URI} projects\.php
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^project=([a-z_]*)$ [NC]
RewriteRule ^(.*)$ project/%1 [R=302,L]
RewriteCond %{REQUEST_URI} !projects.php
RewriteRule ^project/(.*)$ projects.php?project=$1 [L]
它并不完美,因为如果输入了旧式URL,它会将查询字符串附加到经过修饰的URL,但这将由您决定。;-) 但是我应该把它放在我现在的剧本上的什么地方呢?你能给我一些建议吗?@Leo我把它改了,这样你就可以把它放在脚本中的任何地方了。现在正在工作,我也刚刚在你链接到的网站上测试过。我如何测试它?因此,现在的url应该是:但它不起作用也只是在你链接我的网站上测试它,结果是:但我需要project/wix_网站结果是:检查你自己:点击任何项目,看我没有拖,我真的很感谢你的时间和努力伙计你是什么意思伙计?如果有可能,我们可以改变我目前拥有的-请帮助我,伙计!
RewriteCond %{REQUEST_URI} projects\.php
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^project=([a-z_]*)$ [NC]
RewriteRule ^(.*)$ project/%1 [R=302,L]
RewriteCond %{REQUEST_URI} !projects.php
RewriteRule ^project/(.*)$ projects.php?project=$1 [L]