Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 如何从此url中删除id和标题?_Php_.htaccess_Url_Seo_Clean Urls - Fatal编程技术网

Php 如何从此url中删除id和标题?

Php 如何从此url中删除id和标题?,php,.htaccess,url,seo,clean-urls,Php,.htaccess,Url,Seo,Clean Urls,我需要使用.htaccess文件从此url中删除?id=和&title= URL现在-http://www.XXXX.com/video.php?id=XX&title=XXX-XXX-XXX 我需要什么-http://www.XXXX.com/video.php/XX/XXX-XXX-XXX 我已经从所有链接中删除了.php。下面的htaccess代码将完成您的工作 //First Parameer RewriteEngine On RewriteRule ^([a-z

我需要使用.htaccess文件从此url中删除
?id=
&title=

URL现在-
http://www.XXXX.com/video.php?id=XX&title=XXX-XXX-XXX

我需要什么-
http://www.XXXX.com/video.php/XX/XXX-XXX-XXX


我已经从所有链接中删除了.php。

下面的htaccess代码将完成您的工作

    //First Parameer
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)$ video.php?id=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ video.php?id=$1

    //Second Parameter
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ video.php?id=$1&title=$2
    RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ video.php?id=$1&title=$2

将以下代码添加到
.htaccess
文件中

RewriteEngine on
RewriteBase / 
RewriteCond %{QUERY_STRING} ^id=(.*)\&title=(.*)
RewriteRule (.*) /$1/%1/%2?  [NC,L,R=301]
输出为

http://www.XXXX.com/video.php/XX/XXX-XXX-XXX

此代码对我有效,我希望它对您有效。

要访问查询字符串,您需要使用如下
RewriteCond
语句:

RewriteEngine on
RewriteCond %{QUERY_STRING} id=([^&]+)&title=([^&]+)
RewriteRule ^video.php$ video.php/%1/%2 [L,R=301]

当id和title参数与示例的顺序完全一致时,上面的示例可以工作。如果查询字符串中可能有其他参数,或者这些参数可以是任意顺序,则您需要调整规则。

非常感谢您的回答。我已经发布了一个很好的答案

但这是我的工作代码

# To externally redirect /dir/foo.php?id=123&title=456 to /dir/123/456
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?id=([^&]+)&title=([^&\s]+) [NC]
RewriteRule ^ %1/%2/%3? [R,L]

# To externally redirect /dir/foo.php?id=123 to /dir/123
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?id=([^&\s]+)\s [NC]
RewriteRule ^ %1/%2? [R,L]

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

RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ video.php?id=$1&title=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ video.php?id=$1&title=$2

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

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

在(complete.htaccess代码)中完成此代码。我希望这段代码能对某些人有所帮助。对于css、js和图像,请确保使用绝对路径。

您尝试了什么?使用post方法,认为您正在使用get
RewriteRule^video/([0-9]+)/([0-9a-zA-Z_-])$video.php?id=$1&title=$2[NC,L]
这不起作用。是的,这比我的版本好得多。很好,我不明白为什么这会起作用。OP想要删除查询字符串。您的规则将匹配任何带有id和title参数的url,而不仅仅是
/video.php
@MarioA嘿,我现在编辑我的代码,它使用的是任何文件而不仅仅是video.php谢谢为什么应该这样做
RewriteRule^video.php$
只匹配
/video.php
其他内容。嘿,伙计们,这是我的错,对不起。谢谢你指出这一点。