How to remove 'index.php' from permalinks [WordPress on Composer] - wordpress

I have local server, on which I'm running WordPress with Composer.
After database migration from my local to AWS RDS, the permalinks changed it's behaviour: now there's 'index.php' in the beginning of tags, like:
http://example.com/index.php/name-of-page
Also, in the wp-admin->Settings->Permalinks the structure is custom now:
/index.php/%year%/%monthnum%/%day%/%postname%/
Details about my local server:
Xubuntu 18
Apache2
AllowOverride All for both / and var/www/
it's on Composer, with custom dir (wp-content is seperated from wp core)
.htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project/public/wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /project/public/wp/index.php [L]
</IfModule>
# END WordPress
What I have tried:
http://dejanjanosevic.info/remove-index-php-permalink-in-wordpress/
http://derekmolloy.ie/remove-index-php-from-your-wordpress-url/
updating permalinks
updating composer
selling my soul to Satan
What are the results?
Modyfying .htaccess has no effect - just ends in 404, the only links that work are still the ones that include /index.php/. Updating permalinks from WordPress has same result.
I'm running out of ideas here.

I've got it.
For anyone looking for a solution to the same problem, here's guide:
Change permalink settings in wp-admin to pretty permalinks
Install mod_rewrite module in apache
The most important part, in etc/apache/apache2.conf (NOTE THAT YOU MUST CHANGE THE NAME OF FOLDER):
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
<Directory "/var/www/html/NAME_OF_YOUR_PROJECT_FOLDER">
Options FollowSymLinks
AllowOverride All
</Directory>*
Restart apache

Related

Wordpress Permalinks not saving

I have hosted a WordPress site in AWS EC2 and migrated my local to AWS. Now the home page is working fine, but other pages are not opening. It is returning 404. Tried the following in .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>
then in apache2.conf
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Still no luck. I tried changing the permalink structure, but it is not saving. I keep clicking on the Save Changes button, nothing.
There was a conflict with one of the plugin installed. So, I disabled all the plugins and it was working. Then, one by one I started activating and parallelly checking the functionality and finally found the culprit plugin.

Apache .htaccess not being read

I can't seem to figure this out. I'm using Apache 2.4.7 on Ubuntu 14.04 and I have mod_headers enabled. In my /etc/apache2/apache2.conf file, I have the following default Directory statements:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
I'm trying to override the default apache2.conf config by using VirtualHosts for my actual website directory in /etc/apache2/sites-available/000-default.conf:
<VirtualHost *:80>
ServerAdmin blahblah#123456.so
ServerName 999.999.999.999
DocumentRoot /var/www/html/domains/website1
<Directory /var/www/html/domains/website1>
Options -Indexes +FollowSymLinks
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
The website works just fine but whenever I try to enable SEO friendly URLs, I get a 404 error stating the page does not exist. Here's the .htaccess file located in /var/www/html/domains/website1/ (It's a standard Wordpress .htaccess file):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Any ideas would be greatly appreciated. Thanks!
Silly me. I figured it out as I was filling out the Tags section of the form and the tag mod-rewrite popped up as one of the suggestions. I needed mod_rewrite enabled! Durp. Well, thanks to the stackoverflow web developers for building that feature into the site :)

"File does not exist" error on mod_rewrite (WordPress permalink)

I'm trying to configure WordPress permalinks on Linode server running Ubuntu. The permalinks are not working even after doing the basic tricks for configuring them.
.htaccess -file has been given permission "777" and WP has rewritten it:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /mydirectory/mysubdirectory/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /mydirectory/mysubdirectory/index.php [L]
</IfModule>
# END WordPress
I have configured "etc/apache2/sites-available/default in a following way:
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride ALL
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride ALL
Order allow,deny
allow from all
</Directory>
<Directory /var/www/mydomin.com/public_html/mydirectory/>
RewriteEngine On
AllowOverride ALL
</Directory>
As you can see I've tried to set "AllowOverride" to different folders. I just gave it a shot, thought that maybe something is overriding the rule for certain folders.
I have ran "a2enmod rewrite" command on Terminal and mod_rewrite is enabled.
I have restarted my Apache every time I've made changes.
When I navigating on my WordPress site I get "Page not found" error. Apache error log says following:
File does not exist: /var/www/mydomain.com/public_html/mydirectory/mysubdirectory/
What am I missing here?
The below settings can go in your VirtualHost directive for the site in question. In most cases this is located in a separate file and referenced from the main conf file for the server.
RewriteEngine On
AllowOverride ALL
Generally speaking you want to keep all of the settings for each site in their own file. So if you need to tweak anything else do it in the file containing the VirtualHost directive for that site. It makes it much easier to troubleshoot/maintain in the future.

Wordpress 3.8.1 Multisite Subdirectory WP-Admin 404 Error - Tried Everything

Domain is www.sandersonathletics.org
Wordpress 3.8.1, Multisite with Subdirectory.
The error thats cropping up is identified on the new subdirectory site;
www.sandersonathletics.org/football - Unformatted AND
www.sandersonathletics.org/football/wp-admin 404 Error
I've verified the .htaccess file matches what's in Wordpress.
I've verified the appropriate location of .htaccess (public_html root)
I've verified the wp-config file and that the location of the multisite data is in the right place and I've checked what's there.
I've reviewed entries in the mysql database and that the www. matches in wp-config, the database, etc. (The host suggested this)
I've renamed the plug-in directory to plugin-bak to debug a plugin issue. That had no effect.
I'm currently hosted with Dreamhost Shared servers.
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>
Working solution Tested on Ubuntu 16.04 WP 4.9.7 and PHP7:
Source:
https://wordpress.stackexchange.com/questions/167294/multisite-404-error-for-subdirectory
Edit this file /etc/apache2/sites-enabled/.conf
to make it looks like this:
<VirtualHost *:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options FollowSymLinks
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
The part that makes it works is:
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options FollowSymLinks
AllowOverride all
Order allow,deny
allow from all
</Directory>
Restart apache:
sudo service apache2 restart
There you have it! test your sites.

having trouble with wordpress pretty permalinks

I feel like I have read every blog or post on this topic but there are so many out there... I still seem to be missing SOMETHING.I don't know what. My site is hosted on Amazon EC2.
My mod rewrite module is definitely working. I used to have the following in my .htaccess to no avail:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Then, I did "chmod -v 666 .htaccess" to make sure Wordpress could accesss it.
My /etc/apache2/sites-available/default looks like this
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
# AllowOverride FileInfo
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
# AllowOverride FileInfo
Order allow,deny
allow from all
</Directory>
And my /etc/apache2/sites-enabled/000-default looks like this, due to the advice of another thread
<Directory />
Options FollowSymLinks
# AllowOverride FileInfo
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
# AllowOverride FileInfo
Order allow,deny
allow from all
</Directory>
When I restarted Apache, all the text listed above in my .htaccess disappeared and pretty permalinks still do not work. Any one know what I should do next????
In your Apache conf, you need to enable the .htaccess files:
AllowOverride All
Probably you did, but didn't mention so I ask to make sure.. Did you set your desired permalink structure in wp admin? Settings -> Permalinks? I suggest to try Custom structure like /%category%/%postname%/ or /%postname%/

Resources