Php 如何从此url中删除id和标题?
我需要使用.htaccess文件从此url中删除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
?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
其他内容。嘿,伙计们,这是我的错,对不起。谢谢你指出这一点。