【问题标题】:.htaccess redirect a clean image url.htaccess 重定向一个干净的图像 url
【发布时间】:2023-03-22 10:56:01
【问题描述】:

我正在尝试为图像做干净的 URL,其中 url 还包含图像的描述(用于 seo 目的)。文件名中唯一重要的部分是开头和扩展名。

我正在尝试获取类似图像的 URL,例如:

mywebsite.com/seo-images/123-some-description.jpg

在图像实际所在的位置进行干净的 url 重写

mywebsite.com/uploads/123.jpg

文件类型可以是 .jpg 或 .png 或 .gif 等。

我也有缩略图:

mywebsite.com/seo-images/t123-some-description.jpg

也要做一个干净的 url 以同样的方式重写和放置

mywebsite.com/uploads/t123.jpg

我尝试将以下 .htaccess 文件放在 seo-images 目录中

RewriteEngine On
RewriteBase /seo-images/

# match all numbers upto - then get the extension after .
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([_0-9a-zA-Z-]+/)?-([_0-9a-zA-Z-]+/)?([_0-9a-zA-Z-]+/)\.$ /uploads/$1.$3 [R=301,L]

到目前为止,还不好。

我在根目录中有一个 .htaccess 文件,它执行其他干净的 mod_rewrites。

“一些描述”可以是一个词或多个词,由 - 分隔,所以基本上 - 之后和 . 之前的所有内容。应该忽略新文件名,并使用不同目录中的新文件名重写新文件名

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting clean-urls


    【解决方案1】:

    我认为您宁愿使用 /seo-images/.htaccess 中设置的这个更简单的规则,我们仅在 %{REQUEST_FILENAME} 既不是文件也不是目录而不是相反的情况下重写:

    RewriteEngine On
    #RewriteBase /seo-images/
    
    # match all numbers upto - then get the extension after .
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^-]+)-.*\.([[:alnum:]]+)$ /uploads/$1.$2 [L]
    

    如果没有重定向,我们只使用内部重写,Google 将始终考虑 mywebsite.com/seo-images/123-some-description.jpg 而不是 mywebsite.com/uploads/123.jpg。

    或者你更喜欢完全重写:

    RewriteEngine On
    #RewriteBase /seo-images/
    
    # match all numbers upto - then get the extension after .
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^-]+)-.*\.([[:alnum:]]+)$ /uploads/$1.$2 [R=301,L]
    

    这样做:

    /seo-images/123-some-description.jpg => /uploads/123.jpg
    /seo-images/t123-foo-bar.png => /uploads/t123.png
    

    【讨论】:

    • 谢谢,第一个工作就像做梦一样。该目录不称为 seo-images,只是使用此名称来帮助描述我正在尝试做的事情。
    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多