使用.htaccess从url中删除句点

时间:2014-09-30 23:35:57

标签: apache .htaccess web

我已经看到了这个问题的变化,但我不能让它适合我 我的问题是:我有很多在谷歌索引的网址,其中地址有一个或多个句点。例如:http://partiturapara.com.br/15-sheets/809-some-music-enc.4.5

当然URL不起作用,因为Apache认为它是一个扩展,所以我必须剥离它们,留下这样的东西:
http://partiturapara.com.br/15-sheets/809-some-music-enc45

我有一些.htacces线让事情有效(我使用joomla),我将向他们展示。 我尝试过以下几种:

RewriteRule ^([^/]*)\.([^/]*)\.$ /$1$2 [L,R=301] - 但它只是永远加载 并尝试过:

RewriteRule ^([^/]*)\.$ /$1 [NC] - 这几乎可行,但速度很慢,网址无法完成加载。

如果你至少能指出我正确的方向,这将是惊人的,因为我已经花了很多时间试图弄清楚所有这些线路是如何协同工作的,而且非常令人沮丧。

我在.htaccess文件中的实际重写:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
    RewriteCond %{QUERY_STRING} (|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    RewriteRule .* index.php [F]
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/index\.php
    RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # ----- The line I inserted ------
    RewriteRule ^([^/]*)\.$ /$1 [NC]
    #-------My edit end  --------------
    RewriteRule .* index.php [L]

编辑1
-----------------在JON的建议之后更新(它没有用)----------------------

嗨, 在Jon建议之后,我试图找出我的htaccess文件是如何工作的。这样我就以网站仍然有效的方式删除了所有行。线乔恩建议似乎被忽略了。这是最小的.htaccess我得到了:

RewriteEngine On

------ this is the line Jon suggested me  -----
RewriteRule ^(.*)\.([^/]*)\.$ /$1$2 [L,R=301]
------ end line Jon sugested -----------------

RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

正如我所说,网站正常导航,除非它在网址中找到“点”,因此它返回错误:

未找到 在此服务器上找不到请求的URL /15-partituras/1046-sentimental-o.d.m-v-choro。 此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。

也许我误会了什么?

再次感谢!

1 个答案:

答案 0 :(得分:0)

您不想在那里插入该规则。您已经完全篡改了需要应用于index.php路由规则的非常必要的条件。 RewriteCond仅适用于紧随其后的规则。

尝试在RewriteEngine On下面添加此内容:

RewriteRule ^(.*)\.([^/]*)\.$ /$1$2 [L,R=301]