2016-07-25 4 views
3

Это то, что мой .htaccess выглядит файл как:.htaccess перенаправления URL кругленького

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 

#removes trailing slash if not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

#adds ".php" to a URL that isn't a directory or a file 
RewriteCond %{REQUEST_URI} !(\.[^./]+)$ 
RewriteCond %{REQUEST_fileNAME} !-d 
RewriteCond %{REQUEST_fileNAME} !-f 
RewriteRule (.*) $1.php [L] 

Хотя это позволяет мне получить доступ к URL без .php в конце для, например, example.com/sign-up Это не перенаправляет меня от example.com/sign-up.phpexample.com/sign-up к

Есть ли какой-либо код, который я могу добавить к этому файлу, чтобы это произошло?

Любое понимание было бы очень полезно

ответ

1

Я не могу ответить на этот вопрос в комментарии так отправляю это как ответ:

RewriteEngine On 

# remove PHP from root level requests 
RewriteCond %{THE_REQUEST} \.php[\s?] [NC] 
RewriteRule ^([^/]+)\.php$ /$1 [R=302,NE,L,NC] 

# To internally redirect /foo to /foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^/]+)/?$ $1.php [L] 
2

Попробуйте:

RewriteEngine On 

# browser requests PHP 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 

# check to see if the request is for a PHP file: 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^/?(.*)$ /$1.php [L] 
+0

Wow! Это круто! Благодаря! –

+0

Кроме того, как я перенаправлять от: http://example.com/?slug=hey-there к: http://example.com/hey-there Пожалуйста, помогите @ ansuman-Чаухан –

+0

Есть ли способ через которые я могу ограничить это перенаправление только до корневого уровня, например: example.com/sing.php следует перенаправить на example.com/sing , но это не должно происходить с example.com/data/sync.php .. Любые идеи @anubhava Спасибо за ваше время! –

Смежные вопросы