使用请求url使用php清理url

使用请求url使用php清理url,php,.htaccess,Php,.htaccess,我的网站是基于mp3的,首先我的网站URL看起来像 由于一些搜索引擎优化的原因,我把它改为 使用htaccess RewriteEngine On RewriteBase / RewriteRule ^mp3/([^/]+)/?$ $1-mp3-download.html [L,NC,NE,R=301] 但也有一些问题,如(大写、重复破折号和特殊字符) 像 我需要改变它 我需要像这样的url: 提前谢谢你试试strolower($str) Strtolower应该把你

我的网站是基于mp3的,首先我的网站URL看起来像

由于一些搜索引擎优化的原因,我把它改为

使用htaccess

    RewriteEngine On
    RewriteBase /
    RewriteRule ^mp3/([^/]+)/?$ $1-mp3-download.html [L,NC,NE,R=301]
但也有一些问题,如(大写、重复破折号和特殊字符) 像

我需要改变它

我需要像这样的url:

提前谢谢你

试试
strolower($str)
Strtolower
应该把你所有的大写字母转换成小写字母。
相反的是strtoupper

您可以在页面顶部使用以下PHP代码:

<?php 
// $url is your current page's URL i.e.
$url = $_SERVER["SCRIPT_URI"] . '?' . $_SERVER["QUERY_STRING"];
if ( preg_match('/[A-Z]/', $url) ) {
    header("Location: " . preg_replace('/(\p{P})+/', '$1', strtolower($url))); 
    exit;
}
?>
尝试我们的测试通用:


你会发现其他有用的SEO Apache调整,例如index.php to/redirect,区分大小写的重定向对于SEO是不正确的,你应该在你的代码中找到并更改创建不同大小写URL的位置。

如何在你的模式中从大写重定向到小写(a-z)我对php不熟悉,你能解释更多的规则^mp3吗/([a-z]+)/?$$1-mp3-download.html[L,NC,NE,R=301]类似这样的内容如何将多个连字符删除为单个连字符??如使用htaccessTry:
preg_replace('/^\p{p}+\p{p}(?=\p{p})/','',strtolower url))
您能提供如何在htaccess中替换吗?最好在PHP中处理此问题,但如果您想要纯htaccess解决方案,则需要更多的代码。为此,我建议打开一个新问题。使用您的输入字符串对我来说效果很好。单独测试PHP代码,如果出于某种原因无法使用,请在ideone上为我提供一个演示。
AddDefaultCharset utf-8

RewriteEngine On

# Remove www from domain 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Without slash redirect to slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]

# Redirect index.php to /
RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

# Redirect all requests to init script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]