Я посмотрел на это: htaccess remove index.php from url, но это не сработало, и в комментариях, похоже, есть несогласие с верхним ответом.Htaccess Удалить Index.php С URL-адресом
Если я набираю номер http://www.example.com/thanksgiving/index.php/getThankyou, я получаю страницу, которую я хочу обслуживать.
Если я печатаю в http://www.example.com/thanksgiving/getThankyou я получаю 404.
То, что я пытался в моем HTAccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/thanksgiving/(.*)/$ /thanksgiving/index.php/$1 [L]
</IfModule>
Как это сделать так /thanksgiving/getThankyou/
или любой URL, начиная с /thanksgiving
в URL приводит к надлежащему ресурсу, который обслуживается? Опять же, он в настоящее время доступен, когда index.php
находится в URL-адресе.
Я также попытался: RewriteRule ^/thanksgiving/[^/]*/$ /thanksgiving/index.php/$1 [L]
, но это не сработало ...
Edit: Это казалось часть HTAccess установлен для WordPress и может конфликтовать с желаемым поведением выше:
Wordpress часть того же htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Это мешает? Как мне смириться с URL-адресами /thanksgiving/
, которые не являются частью приложения Wordpress?
Edit:
выше относится только к корню (public_html
) Htaccess, ниже является Htaccess в самой /thanksgiving/
, пожалуйста, анализировать конфликты, спасибо за вашу помощь!
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase/
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
# Do not change this line.
# Change example.com to your domain name
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change your_app_name to the subfolder name
RewriteCond %{REQUEST_URI} !^/thanksgiving/
# Don't change the following two lines.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change your_app_name to the subfolder name
# Change example.com to your domain name
RewriteRule ^(.*)$ /thanksgiving/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ thanksgiving/index.php [L]
Ссылка на другой ответ верна. Я не уверен, почему вы изменили «RewriteRule» так, как вы. Измените его на 'RewriteRule^(. *) $ /index.php?/$1 [L]'. Это также не обязательно должно быть между 'IfModule'. Должен просто работать с использованием 'RewriteEngine On' – Lag
@thickguru. Я изменил его, потому что единственные URL-адреса, которые я хочу переписать, это те, которые начинаются с'/thanksgiving/' –