Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess快速url修复程序_Php_.htaccess - Fatal编程技术网

Php .htaccess快速url修复程序

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

我有以下.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=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]