Назад | Перейти на главную страницу

URL-адрес с завершающей косой чертой 404, добавление index.php или? SomeString работает

Недавно я столкнулся с проблемой, когда некоторые страницы 404 при доступе через их неуклюжие пути.

Те же страницы работают, когда строка запроса, например ?1234 или index.php добавляется к пути.

Пример:

http://pagesofinterest.net/code/plugins/code-complete/ - Потерпеть поражение

http://pagesofinterest.net/code/plugins/code-complete/?123 - Успех

http://pagesofinterest.net/code/plugins/code-complete/index.php - Успех

Я не уверен, проблема ли это в mod_rewrite или в кешировании.

Вот содержимое моего файла .htaccess:

# Use PHP5.3 Single php.ini as default
AddHandler application/x-httpd-php53 .php

#ExpiresDefault A0
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
Header set Pragma "no-cache"

DirectoryIndex index.php index.html

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.pagesofinterest.net [NC]
RewriteRule ^(.*)$ http://pagesofinterest.net/$1 [R=301,NC] 

# Error documents
ErrorDocument 404 /404.php
ErrorDocument 403 /404.php
ErrorDocument 500 /500.php

# compress a few file extensions
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/html

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch ^MSIE !no-gzip !gzip-only-text/html

<IfModule mod_expires.c>
    # explicitly disable caching for scripts and other dynamic files
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>

Redirect /mikes http://pagesofinterest.net/blog/
Redirect /code-of-interest http://pagesofinterest.net/code

# Redirect all old photo pages to the tiny new one
RewriteCond %{REQUEST_URI} ^/photos/[a-z\/]+$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://pagesofinterest.net/photos/ [R=301,L] 

Это выглядит странно, нам потребуются ошибки, сгенерированные из журнала модуля перезаписи (см. https://httpd.apache.org/docs/current/mod/mod_rewrite.html для получения дополнительной информации о том, как включить директиву rewritelog). Проблема выглядит как ограниченная вашей страницей с полным кодом, поскольку все доступные ссылки из меню действительно дают действительный URL / страницы.

Способ «быстрого исправления / взлома» - добавить перенаправления для этой страницы. Я НЕ поддерживаю этот способ, но иногда мы просто хотим, чтобы он работал ...

Redirect /code/plugins/code-complete /code/plugins/code-complete/index.php
Redirect /code/plugins/code-complete/ /code/plugins/code-complete/index.php

Кроме того, в качестве примечания, вы теряете «/» в исходном запросе. Я бы изменил

RewriteRule ^(.*)$ http://pagesofinterest.net/$1 [R=301,NC] 

для

RewriteRule ^(.*)$ http://pagesofinterest.net$1 [R=301,NC]